Quickstarters
CRUD Samples
How to Build a CRUD App with Astro?
38 min
descripción general en esta guía, aprenderás cómo crear una aplicación web crud (crear, leer, actualizar y eliminar) utilizando astro este tutorial te guiará a través de la configuración de un proyecto back4app—nuestro robusto backend—y el diseño de una estructura de datos que soporte operaciones fundamentales luego construiremos un frontend de astro que se comunique con back4app a través de apis rest/graphql, asegurando una gestión de datos segura y eficiente al final de esta guía, tendrás una aplicación web lista para producción, completa con autenticación de usuario y manejo seguro de datos lo que aprenderás cómo estructurar una aplicación crud con astro y back4app diseñar un backend escalable con colecciones personalizadas usar una interfaz de administración de arrastrar y soltar para una gestión de datos sin esfuerzo integrar tu frontend de astro con back4app usando rest o graphql desplegar tu proyecto de astro y contenerizarlo con docker si es necesario requisitos previos antes de comenzar, por favor confirma que tienes una cuenta de back4app con un nuevo proyecto listo consulta introducción a back4app https //www back4app com/docs/get started/new parse app para obtener orientación un entorno de desarrollo astro configurado utiliza la documentación oficial de astro https //docs astro build para comenzar asegúrate de que node js (versión 14+) esté instalado conocimientos básicos de javascript, astro y apis rest visita la documentación de astro https //docs astro build si necesitas un repaso paso 1 – inicializando tu proyecto iniciando un nuevo proyecto de back4app inicia sesión en tu cuenta de back4app haz clic en “nueva app” desde tu panel de control nombra tu proyecto basic crud app astro y sigue las instrucciones para completar la configuración crear nuevo proyecto después de la creación, tu proyecto aparecerá en tu panel de control de back4app—tu base para la configuración del backend paso 2 – creando el esquema de tu base de datos estructurando tu modelo de datos para nuestra aplicación crud, definirás varias colecciones a continuación se presentan colecciones de ejemplo con campos y tipos para ayudarte a configurar eficazmente el esquema de tu base de datos esta estructura soporta operaciones crud eficientes 1\ colección de artículos campo tipo propósito id objectid clave primaria generada automáticamente título cadena nombre o título del artículo descripción cadena una breve descripción del artículo creado en fecha marca de tiempo de creación actualizado en fecha marca de tiempo para la última modificación 2\ colección de usuarios campo tipo propósito id objectid clave primaria generada automáticamente nombre de usuario cadena identificador único para el usuario correo electrónico cadena dirección de correo electrónico del usuario hash de contraseña cadena contraseña encriptada para la autenticación creado en fecha cuando se creó la cuenta actualizado en fecha última hora de actualización de la cuenta puedes configurar manualmente estas colecciones en tu panel de back4app creando nuevas clases y añadiendo columnas apropiadas crear nueva clase para agregar un campo, seleccione un tipo de dato, proporcione un nombre de campo, defina un valor predeterminado si es necesario y marque si el campo es obligatorio crear columna aprovechando el agente de ia de back4app para la configuración del esquema el agente de ia integrado en back4app puede generar automáticamente su esquema describa sus colecciones y campos deseados en la interfaz del agente de ia, revise sus recomendaciones y aplíquelas a su proyecto ejemplo de solicitud create these collections in my back4app project 1\) collection items \ fields \ id objectid (auto generated) \ title string \ description string \ created at date (auto created) \ updated at date (auto updated) 2\) collection users \ fields \ id objectid (auto generated) \ username string (unique) \ email string (unique) \ password hash string \ created at date (auto generated) \ updated at date (auto updated) esta herramienta acelera la configuración mientras asegura que su esquema cumpla con los requisitos de la aplicación paso 3 – activando la interfaz de administración y acciones crud explorando la interfaz de administración la aplicación de administración de back4app es una herramienta sin código que proporciona una interfaz visual para gestionar sus datos de backend su diseño de arrastrar y soltar le permite realizar fácilmente operaciones crud activando la interfaz de administración abra el menú “más” en su panel de control de back4app seleccione “aplicación de administración” y haga clic en “habilitar aplicación de administración ” configure sus credenciales de administrador creando el usuario administrador inicial esto también configurará roles predeterminados (por ejemplo, b4aadminuser ) y colecciones del sistema habilitar la aplicación de administración después de la activación, inicie sesión en la aplicación de administración para gestionar sus colecciones tablero de la aplicación de administración gestionando datos con la interfaz de administración dentro de la aplicación de administración puedes agregar registros haz clic en “agregar registro” en una colección (como artículos) para crear nuevas entradas ver/editar registros haz clic en un registro para inspeccionar o modificar sus campos eliminar registros elimina entradas obsoletas sin esfuerzo esta herramienta simplifica las operaciones crud con una interfaz intuitiva paso 4 – conectando astro con back4app con tu backend configurado, es hora de integrar tu frontend de astro utilizando apis rest/graphql dado que astro es un generador de sitios estáticos optimizado para el rendimiento, interactuaremos con back4app utilizando apis rest o graphql este enfoque evita la necesidad del sdk de parse ejemplo recuperando elementos a través de rest a continuación se muestra un ejemplo de una llamada a la api rest dentro de un componente astro // src/components/itemslist astro \ import { usestate, useeffect } from 'react'; const \[items, setitems] = usestate(\[]); useeffect(() => { const fetchitems = async () => { try { const response = await fetch('https //parseapi back4app com/classes/items', { headers { 'x parse application id' 'your application id', 'x parse rest api key' 'your rest api key' } }); const data = await response json(); setitems(data results); } catch (error) { console error('failed to fetch items ', error); } }; fetchitems(); }, \[]); \ \<div> \<h2>items\</h2> \<ul> {items map(item => ( \<li key={item objectid}> {item title} – {item description} \</li> ))} \</ul> \</div> integra llamadas a la api similares para crear, actualizar y eliminar registros dentro de tus componentes astro paso 5 – protegiendo tu backend implementando listas de control de acceso (acls) protege tus datos estableciendo acls en los objetos por ejemplo, para crear un elemento que solo el propietario puede modificar async function createprivateitem(data, owner) { const response = await fetch('https //parseapi back4app com/classes/items', { method 'post', headers { 'content type' 'application/json', 'x parse application id' 'your application id', 'x parse rest api key' 'your rest api key' }, body json stringify({ title data title, description data description, acl { \[owner id] { read true, write true }, ' ' { read false, write false } } }) }); const result = await response json(); console log('created private item ', result); } configurando permisos a nivel de clase (clps) dentro del panel de control de back4app, ajusta los clps para cada colección para definir quién puede acceder y modificar tus datos paso 6 – agregando autenticación de usuario configuración de registro y inicio de sesión de usuario back4app utiliza la clase user de parse para la autenticación en tu proyecto de astro, crea componentes para el registro e inicio de sesión de usuarios aprovechando las llamadas a la api rest ejemplo registro de usuario // src/components/signup astro \ import { usestate } from 'react'; const \[username, setusername] = usestate(''); const \[password, setpassword] = usestate(''); const \[email, setemail] = usestate(''); const handlesignup = async (event) => { event preventdefault(); try { const response = await fetch('https //parseapi back4app com/users', { method 'post', headers { 'content type' 'application/json', 'x parse application id' 'your application id', 'x parse rest api key' 'your rest api key' }, body json stringify({ username, password, email }) }); const result = await response json(); alert('sign up successful!'); } catch (error) { alert('error during sign up ' + error message); } }; \ \<form on\ submit={handlesignup}> \<input type="text" placeholder="username" value={username} oninput={(e) => setusername(e target value)} /> \<input type="password" placeholder="password" value={password} oninput={(e) => setpassword(e target value)} /> \<input type="email" placeholder="email" value={email} oninput={(e) => setemail(e target value)} /> \<button type="submit">register\</button> \</form> puedes construir componentes similares para el inicio de sesión de usuarios y la gestión de sesiones paso 7 – desplegando tu frontend de astro la función de despliegue web de back4app te permite alojar tu proyecto astro sin problemas al conectar tu repositorio de github 7 1 construyendo tu versión de producción abre una terminal en el directorio de tu proyecto ejecuta el comando de construcción npm run build esto genera una dist carpeta optimizada con tus activos estáticos verifica la construcción asegúrate de que la dist carpeta contenga un index html junto con otros directorios de activos 7 2 organizando tu repositorio de proyecto tu repositorio debe incluir el código fuente completo de astro una estructura de ejemplo podría ser basic crud app astro/ ├── node modules/ ├── public/ │ └── favicon ico ├── src/ │ ├── components/ │ │ ├── itemslist astro │ │ └── signup astro │ └── pages/ │ └── index astro ├── package json └── readme md archivo de ejemplo src/components/itemslist astro // src/components/itemslist astro \ import { usestate, useeffect } from 'react'; const \[items, setitems] = usestate(\[]); useeffect(() => { const getitems = async () => { try { const res = await fetch('https //parseapi back4app com/classes/items', { headers { 'x parse application id' 'your application id', 'x parse rest api key' 'your rest api key' } }); const json = await res json(); setitems(json results); } catch (err) { console error('error retrieving items ', err); } }; getitems(); }, \[]); \ \<div> \<h2>item list\</h2> \<ul> {items map(item => ( \<li key={item objectid}> {item title} — {item description} \</li> ))} \</ul> \</div> 7 3 confirmando y enviando tu código a github inicializa un repositorio de git (si no se ha hecho) git init agrega todos los archivos git add confirma tus cambios git commit m "commit inicial para el frontend de astro" crea un repositorio en github (por ejemplo, basic crud app astro ) y empuja git remote add origin https //github com/tu nombre de usuario/basic crud app astro git git push u origin main 7 4 vinculando github con el despliegue web de back4app acceso a la implementación web inicie sesión en su panel de back4app, navegue a su proyecto ( basic crud app astro ), y seleccione la opción implementación web conectar su cuenta de github siga las instrucciones para autorizar a back4app a acceder a su repositorio elija su repositorio y rama seleccione el repositorio (por ejemplo, basic crud app astro ) y la rama (típicamente main ) 7 5 configuración de los ajustes de implementación comando de construcción especifique el comando de construcción (por ejemplo, npm run build ) si su repositorio carece de una salida preconstruida directorio de salida establezca esto en dist para que back4app sepa dónde localizar sus archivos estáticos variables de entorno agregue cualquier variable requerida, como claves api 7 6 dockerizando su aplicación astro (opcional) si prefieres implementaciones en contenedores, incluye un dockerfile como \# use an official node image for building from node 16 alpine as builder \# set the working directory workdir /app \# copy package files and install dependencies copy package json / run npm install \# copy source files and build the project copy run npm run build \# use nginx to serve the static files from nginx\ stable alpine copy from=builder /app/dist /usr/share/nginx/html expose 80 cmd \["nginx", " g", "daemon off;"] integra la configuración de docker en tu configuración de implementación web si lo deseas 7 7 lanzando tu aplicación presiona el botón desplegar en la sección de implementación web monitorea el proceso de construcción back4app recuperará tu código, lo construirá y desplegará tu aplicación recibe tu url una vez desplegado, back4app proporcionará una url donde tu sitio está en vivo paso 8 – conclusión y mejoras futuras ¡gran trabajo! ahora has creado una aplicación crud completa con astro y back4app tu proyecto incluye un backend con colecciones detalladas para artículos y usuarios, y un frontend que realiza todas las operaciones crud a través de apis rest/graphql próximos pasos mejorar el frontend agregar características como vistas detalladas, capacidades de búsqueda y notificaciones en tiempo real expandir la funcionalidad del backend considera integrar funciones en la nube o puntos finales de api adicionales para lógica más compleja profundizar explora más recursos en la documentación de back4app https //www back4app com/docs y en la documentación de astro https //docs astro build para temas avanzados al seguir este tutorial, ahora posees el conocimiento para construir una aplicación crud robusta y escalable utilizando astro y back4app ¡disfruta programando y explorando nuevas posibilidades!