Quickstarters
Feature Overview
Come costruire un backend per Astro?
21 min
introduzione in questa guida su come costruire un backend per astro , imparerai a creare un backend completo utilizzando back4app per il tuo progetto astro tratteremo l'integrazione delle importanti funzionalità di back4app, inclusi la gestione del database, le funzioni cloud, l'autenticazione, l'archiviazione dei file, le query in tempo reale e altro ancora, dimostrando un approccio pratico per costruire applicazioni veloci con strumenti moderni sfruttando l'ambiente di back4app, salti gran parte del lavoro pesante, come la configurazione dei server o la scrittura di strati di sicurezza da zero questa configurazione ti fa risparmiare tempo e sforzi, permettendoti comunque di definire un endpoint per una logica robusta lato server vedrai anche come incorporare variabili d'ambiente nel tuo progetto astro, rendendo più facile memorizzare in modo sicuro le credenziali o altri dati sensibili una volta terminato, avrai una struttura backend scalabile per astro e saprai come gestire i dati con rest, graphql, autenticazione degli utenti, eventi in tempo reale e altro ancora sarai pronto ad aggiungere la tua logica per qualsiasi esigenza del mondo reale mantenendo una solida base di sicurezza prerequisiti un account back4app e un nuovo progetto back4app iniziare con back4app https //www back4app com/docs/get started/new parse app un progetto astro impostare astro https //docs astro build/en/getting started/ assicurati di avere un ambiente di sviluppo astro di base e node js installato node js (versione 14 o superiore) installato installare node js https //nodejs org/en/download/ familiarità con concetti di front end e server side dovresti sapere come creare o modificare astro file, gestire variabili di ambiente e fare una semplice richiesta post con fetch o una libreria simile assicurati che questi prerequisiti siano in atto prima di iniziare avere il tuo account back4app, un ambiente astro e conoscenze di base di javascript ti aiuterà a seguire questo tutorial in modo più fluido passo 1 – creare un nuovo progetto su back4app e connettersi crea un nuovo progetto accedi al tuo account back4app clicca su nuova app nel tuo dashboard di back4app e dagli un nome (ad esempio, “astro backend tutorial”) recupera le credenziali di back4app nel tuo dashboard di back4app, sotto impostazioni app o sicurezza e chiavi , annota il tuo id applicazione , chiave api rest , e l'url del server ( https //parseapi back4app com di default) queste variabili di ambiente saranno utilizzate nella tua integrazione con astro collegare astro a back4app tramite api poiché non stiamo utilizzando direttamente il parse sdk, faremo richieste utilizzando fetch o un'altra libreria dai nostri file astro memorizza le tue credenziali in variabili di ambiente per motivi di sicurezza ad esempio, in un env file passo 2 – configurazione del database creazione di un modello dati crea manualmente un modello dati vai al tuo dashboard di back4app e clicca su database crea una nuova classe (ad esempio, “todo”), e aggiungi campi come title (string) e iscompleted (boolean) usa l'ai agent per creare un modello dati apri l'ai agent dal tuo dashboard dell'app descrivi il tuo schema in linguaggio semplice (ad esempio, “crea una nuova app todo con una classe che ha campi title e iscompleted ”) l'agente genererà la classe e i campi per te lettura e scrittura dei dati utilizzando rest api con il tuo modello di dati pronto, definiamo un endpoint all'interno di un componente astro o di un file lato server per gestire una richiesta post e una richiesta di lettura ad esempio, potresti creare un file come 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> questo esempio utilizza variabili di ambiente ( import meta env ) per memorizzare le tue credenziali back4app definiamo due metodi in un file export const post per creare un todo, e export const get per recuperare tutti i todos puoi adattarlo per soddisfare la struttura del tuo componente di layout e altre pagine del sito lettura e scrittura dei dati utilizzando l'api graphql allo stesso modo, puoi eseguire richieste graphql dalle tue pagine 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> lavorare con le query live (opzionale) le query live abilitano aggiornamenti in tempo reale ai tuoi dati per utilizzarle, abilita le query live nel dashboard di back4app e configura una connessione websocket tuttavia, se stai costruendo un sito astro statico, potresti integrare aggiornamenti in tempo reale tramite script lato client che puntano a wss\ //your subdomain b4a io le query live possono inviare modifiche ai tuoi client connessi ogni volta che i record vengono creati, aggiornati o eliminati passo 3 – applicare la sicurezza con acl e clp acl (liste di controllo degli accessi) e clp (permessi a livello di classe) sono fondamentali per controllare l'accesso ai dati puoi configurarli nella sezione database del tuo dashboard di back4app ad esempio limitare la lettura/scrittura solo agli utenti autenticati utilizzare le acl per la sicurezza per oggetto utilizza le linee guida sulla sicurezza di back4app https //www back4app com/docs/security/parse security per garantire che i tuoi dati rimangano protetti puoi anche impostare queste regole dal dashboard, assicurandoti che anche se le tue chiamate rest sono aperte, solo le credenziali corrette possano modificare o visualizzare i dati passo 4 – scrivere funzioni di cloud code perché cloud code puoi spostare la logica aziendale chiave sul lato server, evitando l'esposizione di segreti o la necessità di mantenere server separati il cloud code può ascoltare i trigger (beforesave, aftersave) o gestire endpoint personalizzati esempio // 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 '; } }); distribuisci questo tramite back4app cli https //www back4app com/docs/local development/parse cli o direttamente nella sezione cloud code del tuo dashboard di back4app chiamare la funzione da astro, puoi definire un endpoint che utilizza fetch per colpire la tua cloud function \ 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 – configurazione dell'autenticazione back4app utilizza la user classe per gestire gli account utente con rest, puoi gestire registrazioni, accessi o disconnessioni ad esempio, registrare un nuovo utente 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 puoi replicare questa logica da astro con fetch in modo simile, utilizzando variabili di ambiente una volta effettuato l'accesso, l'utente riceve un token di sessione per le richieste successive accesso sociale per i fornitori sociali (come google o apple), utilizza endpoint specifici o configura il flusso oauth fai riferimento alla documentazione per l'accesso con apple https //www back4app com/docs/platform/sign in with apple o ad altre guide per l'accesso sociale per integrare un'autenticazione avanzata questo è particolarmente utile se desideri consentire alle persone di accedere al tuo progetto astro con il minimo attrito passaggio 6 – gestione dello storage dei file per memorizzare file in back4app, li invii con l'api rest ad esempio 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 risposta contiene un url del file puoi collegare quell'url a un record, come un oggetto della classe photo , assicurandoti di tenere traccia dei riferimenti al file nel tuo database puoi anche controllare chi può caricare modificando le impostazioni di sicurezza dei file nella configurazione della tua app passaggio 7 – verifica email e reimpostazione della password abilita la verifica email sotto impostazioni app nel dashboard di back4app, abilita la verifica email e personalizza il tuo modello di email di verifica configura la reimpostazione della password allo stesso modo, configura le tue email di reimpostazione della password e assicurati che la classe user abbia indirizzi email validi flusso quando un utente richiede una reimpostazione dal tuo progetto astro (tramite una chiamata api), back4app invia automaticamente un'email con un link sicuro per cambiare la propria password passaggio 8 – pianificazione dei compiti con cloud jobs usa cloud jobs per pianificare manutenzioni ripetute o altri compiti // 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 `; }); distribuisci il tuo codice, quindi programma il lavoro da server settings > background jobs nella console di back4app questo automatizza compiti come la pulizia dei dati, l'invio di email o qualsiasi funzione di routine che desideri eseguire a intervalli specifici passo 9 – integrazione dei webhook i webhook ti permettono di notificare servizi esterni quando si verificano determinati eventi nella tua app back4app ad esempio, puoi inviare dati a slack ogni volta che viene creato un nuovo todo vai su more > webhooks nel tuo dashboard di back4app aggiungi un webhook che punta all'url di slack seleziona l'evento (ad esempio, oggetto creato nella classe todo) questo consente un flusso di richiesta/risposta per mantenere i tuoi sistemi esterni sincronizzati con i dati della tua applicazione basata su astro passo 10 – esplorare il pannello di amministrazione di back4app l' app di amministrazione di back4app è un pannello di gestione user friendly per la modifica dei dati è particolarmente utile per i membri del team non tecnici che necessitano di accesso diretto al tuo database abilita l'app admin sotto altro > app admin crea un utente admin per accesso sicuro usa questo pannello per eseguire rapidamente operazioni crud, controllare i log o configurare impostazioni più avanzate conclusione hai creato con successo un backend sicuro ed efficiente per un progetto astro utilizzando back4app durante questo tutorial, hai definito e configurato uno schema di database usato le api rest e graphql per leggere e scrivere dati sicurezza dei dati con acl, clp e autenticazione degli utenti esteso la logica tramite cloud code e lavori programmati gestito lo storage dei file per immagini o documenti integrato webhook per notifiche esterne esplorato il pannello admin per una gestione semplificata dei dati questo approccio sottolinea come costruire un backend per astro che sia affidabile, scalabile e facile da mantenere sfruttando le variabili ambientali, mantieni al sicuro le tue credenziali garantendo al contempo che il tuo codice rimanga flessibile per la crescita futura prossimi passi distribuisci il tuo progetto astro su piattaforme di hosting che supportano il rendering lato server o ambienti basati su node aggiungi funzionalità avanzate , come il controllo degli accessi basato sui ruoli o integrazioni di pagamento specializzate, utilizzando cloud code o api esterne ottimizza le prestazioni implementando strategie di caching e regolando le impostazioni dei contenuti del tuo viewport per una migliore esperienza utente rivedi la documentazione di back4app per conoscere i log, le analisi e misure di sicurezza più avanzate continua a esplorare funzionalità in tempo reale con live queries e costruisci applicazioni veramente dinamiche e collaborative