Quickstarters
Feature Overview
Come costruire un backend per Elm?
46 min
introduzione in questo tutorial, imparerai come costruire un backend completo per un'applicazione elm utilizzando back4app esploreremo l'integrazione delle funzionalità essenziali di back4app – come la gestione del database, le funzioni cloud code, le api rest e graphql, l'autenticazione degli utenti e le query in tempo reale (live queries) – per creare un backend sicuro, scalabile e robusto che comunica senza problemi con il tuo frontend elm vedrai anche come la rapida configurazione e l'ambiente intuitivo di back4app possano ridurre drasticamente il tempo e lo sforzo rispetto alla configurazione manuale di server e database lungo il percorso, acquisirai esperienza pratica con funzionalità chiave, inclusi avanzati strumenti di sicurezza, programmazione di attività con cloud jobs e configurazione di webhook per integrazioni esterne entro la fine di questo tutorial, sarai ben preparato per migliorare questa configurazione fondamentale in un'applicazione pronta per la produzione o per incorporare facilmente logica personalizzata e api di terze parti secondo necessità requisiti per completare questo tutorial, avrai bisogno di un account back4app e un nuovo progetto back4app iniziare con back4app https //www back4app com/docs/get started/new parse app se non hai un account, puoi crearne uno gratuitamente segui la guida sopra per preparare il tuo progetto ambiente di sviluppo elm di base puoi configurarlo installando elm https //guide elm lang org/install/ assicurati di avere elm (0 19 o superiore) installato sul tuo computer familiarità con elm documentazione ufficiale di elm https //guide elm lang org/ se sei nuovo in elm, rivedi la documentazione ufficiale o un tutorial per principianti prima di iniziare libreria per richieste http o approccio graphql per elm utilizzeremo chiamate rest e graphql da elm, poiché non esiste un sdk ufficiale di parse per elm assicurati di avere la elm/http https //package elm lang org/packages/elm/http/latest/ e, se necessario, una libreria graphql configurata assicurati di avere tutti questi requisiti in atto prima di iniziare avere il tuo progetto back4app configurato e il tuo ambiente elm locale pronto ti aiuterà a seguire più facilmente passo 1 – configurazione del progetto back4app crea un nuovo progetto il primo passo per costruire il tuo backend elm su back4app è creare un nuovo progetto se non ne hai già creato uno, segui questi passaggi accedi al tuo account back4app clicca sul pulsante “nuova app” nel tuo dashboard di back4app dai un nome alla tua app (ad esempio, “elm backend tutorial”) una volta creato il progetto, lo vedrai elencato nel tuo dashboard di back4app questo progetto sarà la base per tutte le configurazioni del backend discusse in questo tutorial collegati a back4app da elm back4app si basa sulla parse platform per gestire i tuoi dati, fornire funzionalità in tempo reale, gestire l'autenticazione degli utenti e altro ancora poiché non esiste un sdk ufficiale di elm per parse, utilizzeremo rest o graphql chiamate dalla nostra applicazione elm per comunicare con il backend di back4app recupera le tue chiavi parse nel tuo dashboard di back4app, vai alla sezione “impostazioni app” o “sicurezza & chiavi” della tua app per trovare il tuo id applicazione , chiave api rest , e endpoint graphql troverai anche l' url del server parse (spesso https //parseapi back4app com ) da elm, puoi memorizzare queste credenziali in un file di configurazione o in un modulo ad esempio src/config elm module config exposing (applicationid, restapikey, serverurl, graphqlendpoint) applicationid string applicationid = "your application id" restapikey string restapikey = "your rest api key" serverurl string serverurl = "https //parseapi back4app com" graphqlendpoint string graphqlendpoint = "https //parseapi back4app com/graphql" utilizzerai questi valori ogni volta che effettui richieste http a back4app da elm completando questo passaggio, hai stabilito come connettere in modo sicuro il tuo front end elm con il backend di back4app passo 2 – configurazione del database salvataggio e query dei dati con il tuo progetto back4app impostato, puoi ora iniziare a salvare e recuperare dati tramite rest o graphql da elm per un esempio semplice, dimostreremo come creare e recuperare un todo utilizzare rest da elm utilizzeremo elm/http https //package elm lang org/packages/elm/http/latest/ per effettuare richieste rest ecco un esempio semplificato per creare un elemento todo src/todoapi elm module todoapi exposing (createtodo, fetchtodos) import config exposing (applicationid, restapikey, serverurl) import http import json decode as decode import json encode as encode \ a simplified representation of a todo type alias todo = { objectid string , title string , iscompleted bool } \ encoder for creating a todo createtodoencoder string > bool > encode value createtodoencoder title iscompleted = encode object \[ ( "title", encode string title ) , ( "iscompleted", encode bool iscompleted ) ] \ decoder for todo tododecoder decode decoder todo tododecoder = decode map3 todo (decode field "objectid" decode string) (decode field "title" decode string) (decode field "iscompleted" decode bool) createtodo string > bool > http request todo createtodo title iscompleted = http request { method = "post" , headers = \[ http header "x parse application id" applicationid , http header "x parse rest api key" restapikey , http header "content type" "application/json" ] , url = serverurl ++ "/classes/todo" , body = http jsonbody (createtodoencoder title iscompleted) , expect = http expectjson tododecoder , timeout = nothing , tracker = nothing } fetchtodos http request (list todo) fetchtodos = http request { method = "get" , headers = \[ http header "x parse application id" applicationid , http header "x parse rest api key" restapikey ] , url = serverurl ++ "/classes/todo" , body = http emptybody , expect = http expectjson (decode field "results" (decode list tododecoder)) , timeout = nothing , tracker = nothing } puoi quindi chiamare createtodo o fetchtodos nella tua funzione di aggiornamento elm, gestire le http risposte e integrare i dati nel modello della tua applicazione utilizzare rest direttamente (esempio in curl) se preferisci testare o vuoi fare chiamate rapide al di fuori di elm, puoi usare curl curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo utilizzare graphql back4app fornisce anche un'interfaccia graphql di seguito è riportata una mutazione graphql di esempio per creare un todo mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } in elm, puoi utilizzare una libreria graphql o creare manualmente le tue richieste http per inviare queste mutazioni e query, molto simile a come abbiamo usato elm/http sopra progettazione dello schema e tipi di dati per impostazione predefinita, parse consente la creazione di schemi al volo , ma puoi anche definire le tue classi e tipi di dati nel dashboard di back4app per avere maggiore controllo naviga nella sezione “database” nel tuo dashboard di back4app crea una nuova classe (ad esempio, “todo”) e aggiungi colonne pertinenti, come titolo (string) e iscompleted (boolean) back4app supporta anche vari tipi di dati string , number , boolean , object , date , file , pointer , array , relation , geopoint , e polygon puoi scegliere il tipo appropriato per ciascun campo o lasciare che parse crei automaticamente queste colonne quando salvi per la prima volta un oggetto dalla tua app elm utilizzando l'approccio rest o graphql back4app offre un agente ai che può aiutarti a progettare il tuo modello di dati apri l'agente ai dal tuo dashboard app o dal menu descrivi il tuo modello di dati in linguaggio semplice (ad esempio, “per favore, crea una nuova app todo su back4app con uno schema di classe completo ”) lascia che l'agente ai crei lo schema per te utilizzare l'agente ai può farti risparmiare tempo nella configurazione della tua architettura dati e garantire coerenza nella tua applicazione dati relazionali se hai dati relazionali – ad esempio, un oggetto categoria che punta a più elementi todo – puoi utilizzare puntatori o relazioni in parse da elm, puoi gestire queste relazioni includendo i campi di puntatore o relazione nelle tue chiamate rest o graphql ad esempio, per aggiungere un puntatore tramite rest { "title" "task with category", "category" { " type" "pointer", "classname" "category", "objectid" "your category object id" } } quando esegui una query, puoi anche includere i dati del puntatore utilizzando il parametro ?include=category in rest o utilizzando include nelle query graphql query in tempo reale per aggiornamenti in tempo reale, back4app fornisce query in tempo reale anche se non esiste un pacchetto elm nativo per le query in tempo reale di parse, puoi comunque abilitarlo nel tuo dashboard di back4app abilita le query in tempo reale nelle impostazioni del server della tua app usa l'endpoint websocket per le query in tempo reale in un client specializzato se desideri integrare le query in tempo reale con elm, potresti sfruttare elm websocket (o un altro approccio personalizzato) per iscriverti ai cambiamenti tuttavia, questo richiede una configurazione più avanzata poiché attualmente non esiste un client ufficiale per le query in tempo reale di elm passo 3 – applicare la sicurezza con acl e clp meccanismo di sicurezza di back4app back4app prende sul serio la sicurezza fornendo access control lists (acls) e class level permissions (clps) queste funzionalità ti consentono di limitare chi può leggere o scrivere dati su base per oggetto o per classe, garantendo che solo gli utenti autorizzati possano modificare i tuoi dati access control lists (acls) un acl è applicato a singoli oggetti per determinare quali utenti, ruoli o il pubblico possono eseguire operazioni di lettura/scrittura puoi configurare gli acl da elm includendo la acl proprietà nel tuo json quando crei o aggiorni oggetti tramite rest o graphql ad esempio, per creare un todo privato, potresti impostare { "title" "private task", "acl" { "user object id" { "read" true, "write" true } } } questo impedisce a chiunque tranne quell'utente di leggere o modificare l'oggetto class level permissions (clps) clps governano le autorizzazioni predefinite di un'intera classe, come se la classe sia leggibile o scrivibile pubblicamente, o se solo determinati ruoli possano accedervi vai al tuo dashboard di back4app , seleziona la tua app e apri la database sezione seleziona una classe (ad esempio, “todo”) apri le autorizzazioni a livello di classe tab configura i tuoi predefiniti, come “richiede autenticazione” per la lettura o la scrittura, o “nessun accesso” per il pubblico queste autorizzazioni impostano la base, mentre le acl affinano le autorizzazioni per oggetti individuali un modello di sicurezza robusto combina tipicamente sia clps (restrizioni ampie) che acls (restrizioni dettagliate per oggetto) per ulteriori informazioni, vai a linee guida sulla sicurezza delle app passo 4 – scrivere e distribuire funzioni cloud il cloud code è una funzionalità dell'ambiente parse server che consente di eseguire codice javascript personalizzato sul lato server – senza la necessità di gestire server o infrastrutture scrivendo il cloud code, puoi estendere il tuo backend di back4app con logica aziendale aggiuntiva, validazioni, trigger e integrazioni che vengono eseguite in modo sicuro ed efficiente sul parse server come funziona quando scrivi il cloud code, di solito posizioni le tue funzioni javascript, trigger e eventuali moduli npm richiesti in un main js (o app js ) file questo file viene quindi distribuito al tuo progetto back4app, che viene eseguito all'interno dell'ambiente parse server tutto il cloud code per la tua app back4app viene eseguito all'interno del parse server gestito da back4app, quindi non devi preoccuparti della manutenzione del server, della scalabilità o della fornitura ogni volta che aggiorni e distribuisci il tuo main js file, il parse server in esecuzione viene aggiornato con il tuo codice più recente // main js // import an npm module (e g , axios) const axios = require('axios'); parse cloud define('fetchexternaldata', async (request) => { const url = request params url; if (!url) { throw new error('url parameter is required'); } const response = await axios get(url); return response data; }); puoi chiamare queste funzioni di cloud code da elm effettuando una richiesta rest a https //parseapi back4app com/functions/fetchexternaldata casi d'uso tipici logica aziendale aggregazione di dati, elaborazione dei pagamenti, ecc validazioni dei dati assicurarsi che determinati campi soddisfino i criteri prima di salvare trigger esecuzione di codice prima o dopo azioni di salvataggio/aggiornamento/cancellazione integrazioni collegamento con api o servizi esterni applicazione della sicurezza controllo dei ruoli o delle autorizzazioni degli utenti prima di eseguire operazioni critiche distribuisci la tua funzione distribuendo tramite il back4app cli installa il cli (esempio linux/macos) curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash configura la tua chiave account b4a configure accountkey distribuisci il tuo codice cloud b4a deploy distribuzione tramite il dashboard nel dashboard della tua app, vai a cloud code > funzioni copia/incolla la funzione nell' main js editor clicca distribuisci chiamare la tua funzione da elm, puoi chiamare una cloud function effettuando una richiesta post import config exposing (applicationid, restapikey, serverurl) import http import json decode as decode import json encode as encode cloudfunction string > encode value > http request decode value cloudfunction functionname body = http request { method = "post" , headers = \[ http header "x parse application id" applicationid , http header "x parse rest api key" restapikey , http header "content type" "application/json" ] , url = serverurl ++ "/functions/" ++ functionname , body = http jsonbody body , expect = http expectjson decode value , timeout = nothing , tracker = nothing } calculatetextlength string > http request decode value calculatetextlength text = let requestbody = encode object \[ ( "text", encode string text ) ] in cloudfunction "calculatetextlength" requestbody puoi anche chiamare le cloud functions tramite graphql mutation { calculatetextlength(input { text "hello graphql" }) { result } } passo 5 – configurazione dell'autenticazione utente autenticazione utente in back4app back4app sfrutta la parse user classe come base per l'autenticazione per impostazione predefinita, parse gestisce l'hashing delle password, i token di sessione e lo storage sicuro puoi creare e accedere agli utenti tramite rest o graphql dalla tua app elm impostazione dell'autenticazione utente registrazione di un nuovo utente (rest) signupuser string > string > string > http request decode value signupuser username password email = http request { method = "post" , headers = \[ http header "x parse application id" applicationid , http header "x parse rest api key" restapikey , http header "content type" "application/json" ] , url = serverurl ++ "/users" , body = http jsonbody (encode object \[ ( "username", encode string username ) , ( "password", encode string password ) , ( "email", encode string email ) ] ) , expect = http expectjson decode value , timeout = nothing , tracker = nothing } accesso (rest) loginuser string > string > http request decode value loginuser username password = http request { method = "get" , headers = \[ http header "x parse application id" applicationid , http header "x parse rest api key" restapikey ] , url = serverurl ++ "/login?username=" ++ username ++ "\&password=" ++ password , body = http emptybody , expect = http expectjson decode value , timeout = nothing , tracker = nothing } integrazione del login sociale back4app e parse possono integrarsi con provider oauth popolari come google , facebook , o apple di solito, configurerai questi provider nel dashboard di back4app e poi farai le richieste necessarie da elm fai riferimento alla documentazione sul login sociale https //www back4app com/docs/platform/sign in with apple per i dettagli sui passaggi di configurazione verifica email e reimpostazione password naviga alle impostazioni email nel tuo dashboard di back4app abilita la verifica email per garantire che i nuovi utenti verifichino la proprietà dei loro indirizzi email configura l'indirizzo del mittente , i modelli email e il tuo dominio personalizzato se desiderato passo 6 – gestione dello storage dei file caricamento e recupero dei file parse include la parse file classe per gestire i caricamenti di file, che back4app memorizza in modo sicuro poiché stiamo usando rest da elm, possiamo fare un caricamento di file multi part o allegare un file codificato in base64 caricamento file tramite rest uploadfile string > string > http request decode value uploadfile filename base64content = http request { method = "post" , headers = \[ http header "x parse application id" applicationid , http header "x parse rest api key" restapikey , http header "content type" "text/plain" ] , url = serverurl ++ "/files/" ++ filename , body = http stringbody "text/plain" base64content , expect = http expectjson decode value , timeout = nothing , tracker = nothing } una volta caricato, riceverai un url del file nella risposta puoi memorizzare quell'url in un campo della classe parse o visualizzarlo nella tua applicazione elm secondo necessità sicurezza dei file parse server fornisce configurazioni per gestire la sicurezza del caricamento dei file ad esempio { "fileupload" { "enableforpublic" true, "enableforanonymoususer" true, "enableforauthenticateduser" true } } passo 7 – pianificazione dei compiti con cloud jobs cloud jobs cloud jobs in back4app ti consente di pianificare ed eseguire compiti di routine sul tuo backend, come la pulizia dei dati obsoleti o l'invio di email periodiche ad esempio, un lavoro per rimuovere i todo più vecchi di 30 giorni potrebbe apparire così // main js parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); distribuisci il tuo cloud code con il nuovo lavoro (tramite cli o dashboard) vai al dashboard di back4app > impostazioni app > impostazioni server > lavori in background pianifica il lavoro per essere eseguito quotidianamente o come desiderato passo 8 – integrazione dei webhook i webhook consentono alla tua app back4app di inviare richieste http a un servizio esterno ogni volta che si verificano determinati eventi questo è potente per l'integrazione con sistemi di terze parti come gateway di pagamento (ad es , stripe), strumenti di email marketing o piattaforme di analisi naviga nella configurazione dei webhook nel tuo dashboard di back4app > altro > webhooks e poi clicca su aggiungi webhook imposta un endpoint (ad es , https //your external service com/webhook endpoint https //your external service com/webhook endpoint ) configura i trigger per specificare quali eventi nelle tue classi back4app o nelle funzioni cloud code attiveranno il webhook ad esempio, se vuoi notificare un canale slack ogni volta che viene creato un nuovo todo crea un'app slack che accetta webhook in entrata copia l'url del webhook di slack nel tuo dashboard di back4app, imposta l'endpoint su quell'url di slack per l'evento “nuovo record nella classe todo ” aggiungi intestazioni http personalizzate o payload se necessario passo 9 – esplorare il pannello di amministrazione di back4app il back4app admin app è un'interfaccia di gestione basata sul web progettata per utenti non tecnici per eseguire operazioni crud e gestire attività di routine sui dati senza scrivere codice fornisce un' interfaccia incentrata sul modello , facile da usare che semplifica l'amministrazione del database, la gestione dei dati personalizzati e le operazioni a livello aziendale abilitare l'admin app abilita andando su app dashboard > altro > admin app e cliccando sul pulsante “abilita admin app” crea un primo utente admin (nome utente/password), che genera automaticamente un nuovo ruolo (b4aadminuser) e classi (b4asetting, b4amenuitem e b4acustomfield) nello schema della tua app scegli un sottodominio per accedere all'interfaccia admin e completare la configurazione accedi utilizzando le credenziali admin che hai creato per accedere al tuo nuovo dashboard dell'admin app una volta abilitata, l'app admin di back4app rende facile visualizzare, modificare o rimuovere record dal tuo database – senza richiedere l'uso diretto del parse dashboard o del codice backend con controlli di accesso configurabili, puoi condividere in modo sicuro questa interfaccia con membri del team o clienti che necessitano di un modo chiaro e intuitivo per gestire i dati conclusione seguendo questo tutorial completo, hai creato un backend sicuro per un'app elm su back4app configurato un database con schemi di classe, tipi di dati e relazioni integrato query in tempo reale (live queries) per aggiornamenti immediati dei dati applicato misure di sicurezza utilizzando acl e clp per proteggere e gestire l'accesso ai dati implementato funzioni di cloud code per eseguire logica aziendale personalizzata sul lato server impostato l'autenticazione degli utenti con supporto per la verifica dell'email e il ripristino della password gestito caricamenti di file e recupero, con controlli di sicurezza opzionali per i file pianificato cloud jobs per attività di background automatizzate utilizzato webhooks per integrarsi con servizi esterni esplorato il pannello di amministrazione di back4app per la gestione dei dati con un solido frontend elm e un robusto backend back4app, sei ora ben attrezzato per sviluppare applicazioni ricche di funzionalità, scalabili e sicure continua a esplorare funzionalità più avanzate, integra la tua logica aziendale e sfrutta la potenza di back4app per risparmiarti innumerevoli ore nella gestione di server e database buon coding! prossimi passi costruisci un'app elm pronta per la produzione estendendo questo backend per gestire modelli di dati più complessi, strategie di caching e ottimizzazioni delle prestazioni integra funzionalità avanzate come flussi di autenticazione specializzati, controllo degli accessi basato sui ruoli o api esterne (come i gateway di pagamento) controlla la documentazione ufficiale di back4app per approfondimenti su sicurezza avanzata, ottimizzazione delle prestazioni e analisi dei log esplora altri tutorial su applicazioni di chat in tempo reale, dashboard iot o servizi basati sulla posizione puoi combinare le tecniche apprese qui con api di terze parti per creare applicazioni complesse e reali