Quickstarters
Feature Overview
Como Construir um Backend para Astro?
21 min
introdução neste guia sobre como construir um backend para astro , você aprenderá como criar um backend completo usando back4app para seu projeto astro vamos abordar a integração de recursos importantes do back4app, incluindo gerenciamento de banco de dados, funções em nuvem, autenticação, armazenamento de arquivos, consultas em tempo real e mais—demonstrando uma abordagem prática para construir aplicações rápidas com ferramentas modernas ao aproveitar o ambiente do back4app, você evita muito trabalho pesado, como configurar servidores ou escrever camadas de segurança do zero essa configuração economiza tempo e esforço, enquanto ainda permite que você defina um endpoint para lógica robusta do lado do servidor você também verá como incorporar variáveis de ambiente em seu projeto astro, facilitando o armazenamento seguro de credenciais ou outros dados sensíveis uma vez que você termine, terá uma estrutura de backend escalável para astro e saberá como lidar com dados usando rest, graphql, autenticação de usuários, eventos em tempo real e mais você estará preparado para adicionar sua própria lógica para quaisquer necessidades do mundo real, mantendo uma base de segurança sólida pré requisitos uma conta back4app e um novo projeto back4app introdução ao back4app https //www back4app com/docs/get started/new parse app um projeto astro configurando o astro https //docs astro build/en/getting started/ certifique se de ter um ambiente básico de desenvolvimento astro e o node js instalado node js (versão 14 ou superior) instalado instalando o node js https //nodejs org/en/download/ familiaridade com conceitos de front end e back end você deve saber como criar ou editar arquivos astro , lidar com variáveis de ambiente e fazer uma solicitação post simples com fetch ou uma biblioteca similar certifique se de que esses pré requisitos estejam em ordem antes de começar ter sua conta back4app, um ambiente astro e conhecimentos básicos de javascript ajudará você a acompanhar este tutorial de forma mais tranquila passo 1 – criando um novo projeto no back4app e conectando criar um novo projeto faça login na sua conta back4app clique em novo app no seu painel do back4app e dê um nome (por exemplo, “astro backend tutorial”) recuperar credenciais do back4app no seu painel do back4app, em configurações do app ou segurança & chaves , anote seu id da aplicação , chave da api rest , e a url do servidor ( https //parseapi back4app com por padrão) essas variáveis de ambiente serão usadas na sua integração com o astro conectando o astro ao back4app via apis como não estamos usando o sdk do parse diretamente, faremos requisições usando fetch ou outra biblioteca a partir dos nossos arquivos astro armazene suas credenciais em variáveis de ambiente para segurança por exemplo, em um env arquivo passo 2 – configurando o banco de dados criando um modelo de dados criar um modelo de dados manualmente vá para o seu painel do back4app e clique em banco de dados crie uma nova classe (por exemplo, “todo”), e adicione campos como título (string) e estácompleto (boolean) use o agente de ia para criar um modelo de dados abra o agente de ia a partir do painel do seu aplicativo descreva seu esquema em linguagem simples (por exemplo, “crie um novo aplicativo todo com uma classe que tenha campos de título e estácompleto ”) o agente irá gerar a classe e os campos para você lendo e escrevendo dados usando a api rest com seu modelo de dados pronto, vamos definir um endpoint dentro de um componente astro ou arquivo do lado do servidor para lidar com uma solicitação de post e uma solicitação de leitura por exemplo, você pode criar um arquivo 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 exemplo usa variáveis de ambiente ( import meta env ) para armazenar suas credenciais do back4app definimos dois métodos em um arquivo export const post para criar um todo, e export const get para recuperar todos os todos você pode adaptá lo para se adequar à estrutura do seu componente de layout e outras páginas do site lendo e escrevendo dados usando a api graphql da mesma forma, você pode realizar solicitações graphql a partir de suas páginas 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> trabalhando com consultas ao vivo (opcional) consultas ao vivo permitem atualizações em tempo real dos seus dados para usá las, ative consultas ao vivo no painel do back4app e configure uma conexão websocket no entanto, se você estiver construindo um site astro estático, pode integrar atualizações em tempo real via scripts do lado do cliente apontando para wss\ //your subdomain b4a io consultas ao vivo podem enviar alterações para seus clientes conectados sempre que registros forem criados, atualizados ou excluídos passo 3 – aplicando segurança com acls e clps acls (listas de controle de acesso) e clps (permissões de nível de classe) são fundamentais para controlar o acesso aos dados você pode configurá los na seção banco de dados do seu painel do back4app por exemplo restringir leitura/escrita apenas a usuários autenticados usar acls para segurança por objeto use as diretrizes de segurança do back4app https //www back4app com/docs/security/parse security para garantir que seus dados permaneçam protegidos você também pode definir essas regras a partir do painel, garantindo que mesmo que suas chamadas rest estejam abertas, apenas credenciais corretas possam modificar ou visualizar os dados passo 4 – escrevendo funções de código em nuvem por que código em nuvem você pode mover a lógica de negócios chave para o lado do servidor, evitando a exposição de segredos ou a necessidade de manter servidores separados o código em nuvem pode escutar gatilhos (beforesave, aftersave) ou lidar com endpoints personalizados exemplo // 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 '; } }); implante isso via back4app cli https //www back4app com/docs/local development/parse cli ou diretamente na seção código em nuvem do seu painel do back4app chamando a função a partir do astro, você pode definir um endpoint que usa fetch para acessar sua função na nuvem \ 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> passo 5 – configurando a autenticação back4app usa a user classe para gerenciar contas de usuário com rest, você pode gerenciar inscrições, logins ou logouts por exemplo, inscrevendo um novo usuário 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 você pode replicar essa lógica do astro com fetch de maneira semelhante, usando variáveis de ambiente uma vez logado, o usuário recebe um token de sessão para solicitações subsequentes login social para provedores sociais (como google ou apple), use endpoints específicos ou configure o fluxo oauth consulte a documentação de login com apple https //www back4app com/docs/platform/sign in with apple ou outros guias de login social para integrar autenticação avançada isso é particularmente útil se você quiser permitir que as pessoas façam login em seu projeto astro com mínima fricção passo 6 – manipulação de armazenamento de arquivos para armazenar arquivos no back4app, você os envia com a api rest por exemplo 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 a resposta contém uma url de arquivo você pode vincular essa url a um registro, como um objeto da classe foto , garantindo que você rastreie referências ao arquivo em seu banco de dados você também pode controlar quem pode fazer upload ajustando as configurações de segurança de arquivos na configuração do seu aplicativo passo 7 – verificação de email e redefinição de senha ativar verificação de email em configurações do aplicativo , no painel do back4app, ative a verificação de email e personalize seu modelo de email de verificação configurar redefinição de senha da mesma forma, configure seus emails de redefinição de senha e garanta que a classe user tenha endereços de email válidos fluxo quando um usuário solicita uma redefinição do seu projeto astro (via uma chamada de api), o back4app envia automaticamente um email com um link seguro para alterar sua senha passo 8 – agendamento de tarefas com jobs em nuvem use jobs em nuvem para agendar manutenção repetida ou outras tarefas // 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 `; }); implante seu código e, em seguida, agende o trabalho a partir de configurações do servidor > trabalhos em segundo plano no console do back4app isso automatiza tarefas como limpeza de dados, envio de e mails ou qualquer função rotineira que você deseja executar em intervalos específicos passo 9 – integrando webhooks webhooks permitem que você notifique serviços externos quando certos eventos acontecem em seu aplicativo back4app por exemplo, você pode enviar dados para o slack sempre que um novo todo é criado vá para mais > webhooks no seu painel do back4app adicione um webhook apontando para a url do slack selecione o evento (por exemplo, objeto criado na classe todo) isso permite um fluxo de solicitação/resposta para manter seus sistemas externos sincronizados com os dados da sua aplicação baseada em astro passo 10 – explorando o painel de administração do back4app o aplicativo de administração do back4app é um painel de gerenciamento fácil de usar para edição de dados é especialmente útil para membros da equipe não técnicos que precisam de acesso direto ao seu banco de dados ativar o app admin em mais > app admin criar um usuário admin para acesso seguro usar este painel para realizar rapidamente operações crud, verificar logs ou configurar configurações mais avançadas conclusão você criou com sucesso um backend seguro e eficiente para um projeto astro usando back4app ao longo deste tutorial, você definiu e configurou um esquema de banco de dados usou apis rest e graphql para ler e escrever dados protegeu dados com acls, clps e autenticação de usuários estendeu a lógica através do cloud code e trabalhos agendados gerenciou armazenamento de arquivos para imagens ou documentos integrou webhooks para notificações externas explorou o painel de administração para gerenciamento simplificado de dados essa abordagem destaca como construir um backend para astro que seja confiável, escalável e fácil de manter ao aproveitar variáveis de ambiente, você mantém suas credenciais seguras enquanto garante que seu código permaneça flexível para o crescimento futuro próximos passos implante seu projeto astro em plataformas de hospedagem que suportam renderização do lado do servidor ou ambientes baseados em node adicione recursos avançados , como controle de acesso baseado em função ou integrações de pagamento especializadas, usando cloud code ou apis externas otimize o desempenho implementando estratégias de cache e ajustando as configurações de conteúdo do seu viewport para uma melhor experiência do usuário revise a documentação do back4app para aprender sobre logs, análises e medidas de segurança mais avançadas continue explorando recursos em tempo real com consultas ao vivo e construa aplicações verdadeiramente dinâmicas e colaborativas