Quickstarters
Feature Overview
¿Cómo construir un backend para Astro?
21 min
introducción en esta guía sobre cómo construir un backend para astro , aprenderás a crear un backend completo utilizando back4app para tu proyecto de astro cubriremos la integración de características importantes de back4app, incluyendo gestión de bases de datos, funciones en la nube, autenticación, almacenamiento de archivos, consultas en tiempo real y más, demostrando un enfoque práctico para construir aplicaciones rápidas con herramientas modernas al aprovechar el entorno de back4app, evitas mucho trabajo pesado, como configurar servidores o escribir capas de seguridad desde cero esta configuración te ahorra tiempo y esfuerzo, mientras aún te permite definir un punto final para una lógica robusta del lado del servidor también verás cómo incorporar variables de entorno en tu proyecto de astro, facilitando el almacenamiento seguro de credenciales u otros datos sensibles una vez que termines, tendrás una estructura de backend escalable para astro y sabrás cómo manejar datos con rest, graphql, autenticación de usuarios, eventos en tiempo real y más estarás preparado para agregar tu propia lógica para cualquier necesidad del mundo real mientras mantienes una sólida base de seguridad requisitos previos una cuenta de back4app y un nuevo proyecto de back4app comenzando con back4app https //www back4app com/docs/get started/new parse app un proyecto de astro configurando astro https //docs astro build/en/getting started/ asegúrate de tener un entorno de desarrollo básico de astro y node js instalado node js (versión 14 o superior) instalado instalando node js https //nodejs org/en/download/ familiaridad con conceptos de front end y del lado del servidor deberías saber cómo crear o editar archivos astro , manejar variables de entorno y hacer una solicitud post simple con fetch o una biblioteca similar asegúrate de que estos requisitos previos estén en su lugar antes de comenzar tener tu cuenta de back4app, un entorno de astro y conocimientos básicos de javascript te ayudará a seguir este tutorial de manera más fluida paso 1 – crear un nuevo proyecto en back4app y conectar crear un nuevo proyecto inicia sesión en tu cuenta de back4app haz clic en nueva aplicación en tu panel de back4app y dale un nombre (por ejemplo, “astro backend tutorial”) recuperar credenciales de back4app en tu panel de back4app, bajo configuración de la aplicación o seguridad y claves , anota tu id de aplicación , clave api rest , y la url del servidor ( https //parseapi back4app com por defecto) estas variables de entorno se utilizarán en tu integración con astro conectar astro a back4app a través de apis dado que no estamos utilizando el sdk de parse directamente, haremos solicitudes utilizando fetch u otra biblioteca desde nuestros archivos de astro almacena tus credenciales en variables de entorno por seguridad por ejemplo, en un env archivo paso 2 – configuración de la base de datos creando un modelo de datos crear un modelo de datos manualmente ve a tu panel de back4app y haz clic en base de datos crea una nueva clase (por ejemplo, “todo”), y añade campos como título (string) y estácompletado (boolean) usa el agente de ia para crear un modelo de datos abre el agente de ia desde el panel de tu aplicación describe tu esquema en lenguaje sencillo (por ejemplo, “crea una nueva aplicación todo con una clase que tenga campos de título y estácompletado ”) el agente generará la clase y los campos por ti lectura y escritura de datos usando rest api con tu modelo de datos listo, definamos un endpoint dentro de un componente astro o un archivo del lado del servidor para manejar una solicitud de publicación y una solicitud de lectura por ejemplo, podrías crear un archivo como src/pages/api/todos astro \ import type { apiroute } from 'astro'; export const post apiroute = async ({ request }) => { const body = await request json(); // "create" a todo const url = `${import meta env back4app server url}/classes/todo`; const response = await fetch(url, { method 'post', headers { 'x parse application id' import meta env back4app app id, 'x parse rest api key' import meta env back4app rest key, 'content type' 'application/json' }, body json stringify({ title body title, iscompleted body iscompleted }) }); const data = await response json(); return new response(json stringify(data), { status 200 }); }; export const get apiroute = async () => { // "read" all todos const url = `${import meta env back4app server url}/classes/todo`; const response = await fetch(url, { method 'get', headers { 'x parse application id' import meta env back4app app id, 'x parse rest api key' import meta env back4app rest key } }); const data = await response json(); return new response(json stringify(data), { status 200 }); }; \ \<html lang="en"> \<head> \<meta name="viewport" content="width=device width, initial scale=1 0" /> \<link rel="icon" type="image/svg+xml" href="/favicon svg" /> \<meta name="generator" content="astro generator" /> \<title>todos api\</title> \</head> \<body> \<h1>api for todo\</h1> \</body> \</html> este ejemplo utiliza variables de entorno ( import meta env ) para almacenar tus credenciales de back4app definimos dos métodos en un archivo export const post para crear un todo, y export const get para recuperar todos los todos puedes adaptarlo para que se ajuste a la estructura de tu componente de diseño y otras páginas del sitio lectura y escritura de datos usando la api de graphql de manera similar, puedes realizar solicitudes de graphql desde tus páginas de astro \ export async function post({ request }) { const body = await request json(); const url = `${import meta env back4app server url}/graphql`; const query = ` mutation { createtodo(input { fields { title "${body title}" iscompleted ${body iscompleted} } }) { todo { objectid title iscompleted } } } `; const response = await fetch(url, { method 'post', headers { 'x parse application id' import meta env back4app app id, 'x parse rest api key' import meta env back4app rest key, 'content type' 'application/json' }, body json stringify({ query }) }); const data = await response json(); return new response(json stringify(data), { status 200 }); } \ \<html lang="en"> \<head> \<meta name="viewport" content="width=device width, initial scale=1 0" /> \<link rel="icon" type="image/svg+xml" href="/favicon svg" /> \<title>todos graphql\</title> \</head> \<body> \<h1>graphql endpoint for todos\</h1> \</body> \</html> trabajando con consultas en vivo (opcional) las consultas en vivo permiten actualizaciones en tiempo real de tus datos para usarlas, habilita las consultas en vivo en el panel de control de back4app y configura una conexión websocket sin embargo, si estás construyendo un sitio estático de astro, podrías integrar actualizaciones en tiempo real a través de scripts del lado del cliente que apunten a wss\ //your subdomain b4a io las consultas en vivo pueden enviar cambios a tus clientes conectados cada vez que se crean, actualizan o eliminan registros paso 3 – aplicando seguridad con acls y clps acls (listas de control de acceso) y clps (permisos a nivel de clase) son fundamentales para controlar el acceso a los datos puedes configurarlos en la base de datos sección de tu panel de control de back4app por ejemplo restringir lectura/escritura solo a usuarios autenticados usar acls para seguridad por objeto usa las directrices de seguridad de back4app https //www back4app com/docs/security/parse security para asegurar que tus datos permanezcan protegidos también puedes establecer estas reglas desde el panel de control, asegurando que incluso si tus llamadas rest están abiertas, solo las credenciales correctas pueden modificar o ver los datos paso 4 – escribiendo funciones de cloud code por qué cloud code puedes mover la lógica empresarial clave al lado del servidor, evitando la exposición de secretos o la necesidad de mantener servidores separados cloud code puede escuchar disparadores (beforesave, aftersave) o manejar puntos finales personalizados ejemplo // main js (cloud code) parse cloud define('greetuser', async (request) => { const username = request params name || 'guest'; return `hello, ${username}! welcome to the astro project `; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'todos must have a title '; } }); despliega esto a través de back4app cli https //www back4app com/docs/local development/parse cli o directamente en la cloud code sección de tu panel de control de back4app llamando a la función desde astro, puedes definir un endpoint que utiliza fetch para acceder a tu función en la nube \ export async function post({ request }) { const body = await request json(); const url = `${import meta env back4app server url}/functions/greetuser`; const response = await fetch(url, { method 'post', headers { 'x parse application id' import meta env back4app app id, 'x parse rest api key' import meta env back4app rest key, 'content type' 'application/json' }, body json stringify({ name body name }) }); const data = await response json(); return new response(json stringify(data), { status 200 }); } \ \<html lang="en"> \<head> \<meta name="viewport" content="width=device width, initial scale=1 0" /> \<link rel="icon" type="image/svg+xml" href="/favicon svg" /> \<title>cloud code greet\</title> \</head> \<body> \<h1>greet function endpoint\</h1> \</body> \</html> paso 5 – configurando la autenticación back4app utiliza la user clase para manejar cuentas de usuario con rest, puedes gestionar registros, inicios de sesión o cierres de sesión por ejemplo, registrando un nuevo usuario curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest key" \\ h "content type application/json" \\ d '{"username" "user1","password" "secret123","email" "user1\@example com"}' \\ https //parseapi back4app com/users puedes replicar esta lógica desde astro con fetch de manera similar, utilizando variables de entorno una vez que el usuario inicia sesión, recibe un token de sesión para solicitudes posteriores inicio de sesión social para proveedores sociales (como google o apple), utiliza endpoints específicos o configura el flujo de oauth consulta la documentación de inicio de sesión con apple https //www back4app com/docs/platform/sign in with apple u otras guías de inicio de sesión social para integrar autenticación avanzada esto es particularmente útil si deseas permitir que las personas inicien sesión desde tu proyecto astro con una fricción mínima paso 6 – manejo del almacenamiento de archivos para almacenar archivos en back4app, los envías con la api rest por ejemplo curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest key" \\ h "content type image/png" \\ \ data binary "@path/to/local/image png" \\ https //parseapi back4app com/files/myimage png la respuesta contiene una url de archivo puedes vincular esa url a un registro, como un objeto de clase photo , asegurando que rastrees las referencias al archivo en tu base de datos también puedes controlar quién puede subir archivos ajustando la configuración de seguridad de archivos en la configuración de tu aplicación paso 7 – verificación de correo electrónico y restablecimiento de contraseña habilitar verificación de correo electrónico en configuraciones de la aplicación en el panel de control de back4app, habilita la verificación de correo electrónico y personaliza tu plantilla de correo electrónico de verificación configurar restablecimiento de contraseña de manera similar, configura tus correos electrónicos de restablecimiento de contraseña y asegúrate de que la clase user tenga direcciones de correo electrónico válidas flujo cuando un usuario solicita un restablecimiento desde tu proyecto astro (a través de una llamada api), back4app envía automáticamente un correo electrónico con un enlace seguro para cambiar su contraseña paso 8 – programación de tareas con trabajos en la nube usa trabajos en la nube para programar mantenimiento repetido u otras tareas // main js parse cloud job('cleanupoldtodos', async () => { const query = new parse query('todo'); const now = new date(); const thirty days = 30 24 60 60 1000; query lessthan('createdat', new date(now thirty days)); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); despliega tu código, luego programa el trabajo desde configuración del servidor > trabajos en segundo plano en la consola de back4app esto automatiza tareas como limpiar datos, enviar correos electrónicos o cualquier función rutinaria que desees ejecutar en intervalos específicos paso 9 – integrando webhooks webhooks te permiten notificar a servicios externos cuando ocurren ciertos eventos en tu aplicación de back4app por ejemplo, puedes enviar datos a slack cada vez que se crea un nuevo todo ve a más > webhooks en tu panel de control de back4app agrega un webhook apuntando a la url de slack selecciona el evento (por ejemplo, objeto creado en la clase todo) esto permite un flujo de solicitud/respuesta para mantener tus sistemas externos sincronizados con los datos de tu aplicación basada en astro paso 10 – explorando el panel de administración de back4app la aplicación de administración de back4app es un panel de gestión fácil de usar para la edición de datos es especialmente útil para miembros del equipo no técnicos que necesitan acceso directo a tu base de datos habilitar la aplicación de administración en más > aplicación de administración crear un usuario administrador para acceso seguro usar este panel para realizar rápidamente operaciones crud, verificar registros o configurar ajustes más avanzados conclusión has creado con éxito un backend seguro y eficiente para un proyecto de astro utilizando back4app a lo largo de este tutorial, tú definido y configurado un esquema de base de datos usado apis rest y graphql para leer y escribir datos asegurado datos con acls, clps y autenticación de usuarios extendido la lógica a través de cloud code y trabajos programados manejado el almacenamiento de archivos para imágenes o documentos integrado webhooks para notificaciones externas explorado el panel de administración para una gestión de datos simplificada este enfoque subraya cómo construir un backend para astro que sea confiable, escalable y fácil de mantener al aprovechar las variables de entorno, mantienes tus credenciales seguras mientras aseguras que tu código permanezca flexible para el crecimiento futuro próximos pasos despliega tu proyecto astro en plataformas de hosting que soporten renderizado del lado del servidor o entornos basados en node agrega características avanzadas , como control de acceso basado en roles o integraciones de pago especializadas, utilizando cloud code o apis externas optimiza el rendimiento implementando estrategias de caché y ajustando la configuración del contenido de tu viewport para una mejor experiencia del usuario revisa la documentación de back4app para aprender sobre registros, análisis y medidas de seguridad más avanzadas continúa explorando características en tiempo real con consultas en vivo y construye aplicaciones verdaderamente dinámicas y colaborativas