Quickstarters
Feature Overview
Come costruire un backend per Golang?
35 min
introduzione in questo tutorial, imparerai come costruire e testare un backend completo per golang utilizzando back4app ti guideremo nell'integrazione delle funzionalità essenziali di back4app—come la gestione del database, le impostazioni di sicurezza, l'autenticazione degli utenti, l'archiviazione dei file e il cloud code—per creare un backend sicuro, flessibile e scalabile che funzioni bene con il tuo server http go il nostro obiettivo sarà utilizzare le api restful di back4app per connetterci al database dal nostro client http golang, piuttosto che un sdk parse dedicato, in modo da illustrare come costruire funzioni di gestione facili da mantenere per il tuo nuovo backend vedrai come questo approccio riduce la complessità dello sviluppo rispetto alla configurazione dei propri server da zero affidandoti alle query in tempo reale di back4app, all'archiviazione dei file e ai sistemi di autenticazione degli utenti, accelererai il processo di creazione del tuo backend alla fine, saprai come costruire un backend golang sicuro, pianificare attività automatizzate e integrare webhook esterni sarai ben preparato per migliorare questa base in un'applicazione pronta per la produzione o aggiungere logica personalizzata secondo necessità requisiti un account back4app registrati gratuitamente qui https //www back4app com/ un nuovo progetto back4app iniziare con back4app https //www back4app com/docs/get started/new parse app ambiente di sviluppo go (golang) assicurati di avere go installato sul tuo computer puoi trovare istruzioni nella documentazione ufficiale di go https //go dev/ conoscenze di base del pacchetto http di go e delle api restful familiarità con come scrivere un gestore func, analizzare i messaggi di errore, gestire le richieste post e impostare un server http localhost sarà utile assicurati di avere questi requisiti in atto prima di procedere questa configurazione semplificherà la tua esperienza mentre scopri come costruire un backend per golang utilizzando back4app passo 1 – creare un nuovo progetto su back4app e connettersi perché un nuovo progetto? creare un nuovo progetto back4app è il tuo primo passo è qui che memorizzerai i dati, configurerai l'archiviazione dei file, programmerai funzioni cloud e aggiungerai attività in background questo progetto backend ancorerà tutti i passaggi successivi accedi al tuo account back4app clicca su “nuova app” nel tuo dashboard di back4app dai un nome alla tua app (ad esempio, “golang backend tutorial”) una volta creata, apparirà nel tuo dashboard questa applicazione è ora il tuo backend basato su back4app collegamento tramite rest apis back4app fornisce api restful per creare, aggiornare e eliminare dati in golang, utilizzeremo il client http della libreria standard di go per comunicare con questi endpoint trova il tuo id applicazione e chiave api rest andando alla sezione impostazioni o sicurezza e chiavi della tua app back4app avrai bisogno di queste credenziali in ogni intestazione della richiesta illustreremo questo nei prossimi passaggi quando ci connetteremo al database utilizzando il metodo post, get e altre richieste http passo 2 – configurazione del database creazione di un modello di dati per memorizzare i dati in back4app, definisci classi (tabelle) e colonne (campi) ad esempio, supponiamo di voler creare una todo classe puoi crearla manualmente nel dashboard di back4app vai alla sezione database nel dashboard della tua app crea una nuova classe chiamata “todo ” aggiungi colonne come titolo (string) e iscompleted (boolean) puoi anche lasciare che il sistema crei automaticamente colonne inviando oggetti con nuovi campi dalla tua applicazione golang creare un modello di dati utilizzando l'agente ai apri l'agente ai nel tuo cruscotto dell'app descrivi il tuo modello di dati desiderato (ad esempio, “per favore crea una nuova classe todo con un campo titolo e un campo iscompleted ”) accetta lo schema suggerito questa comoda funzionalità fa risparmiare tempo nella progettazione dello schema del database lettura e scrittura di dati utilizzando rest api (esempio in golang) di seguito è riportato un esempio di base su come creare (metodo post) e recuperare (metodo get) dati utilizzando il pacchetto http di go supponi di avere il tuo application id e rest api key come variabili d'ambiente package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "log" "net/http" ) type todo struct { objectid string `json "objectid,omitempty"` title string `json "title,omitempty"` iscompleted bool `json "iscompleted,omitempty"` } func main() { // example create todo newtodo = todo{ title "buy groceries", iscompleted false, } created, err = createtodo(newtodo) if err != nil { log println("error creating todo ", err) } else { log println("created todo with id ", created objectid) } // example fetch todos todos, err = fetchalltodos() if err != nil { log println("error fetching todos ", err) } else { for , t = range todos { log println("fetched todo ", t title, t iscompleted) } } } // createtodo sends a post request to save a new record in the "todo" class func createtodo(todo todo) (todo, error) { // convert struct to json body, = json marshal(todo) // create http request req, err = http newrequest("post", "https //parseapi back4app com/classes/todo", bytes newbuffer(body)) if err != nil { return todo{}, err } // set necessary headers req header set("x parse application id", "your application id") req header set("x parse rest api key", "your rest api key") req header set("content type", "application/json") // execute the request client = \&http client{} resp, err = client do(req) if err != nil { return todo{}, err } defer resp body close() if resp statuscode != http statuscreated && resp statuscode != http statusok { bodybytes, = ioutil readall(resp body) return todo{}, fmt errorf("api error %s", string(bodybytes)) } // parse response var createdtodo todo if err = json newdecoder(resp body) decode(\&createdtodo); err != nil { return todo{}, err } return createdtodo, nil } // fetchalltodos retrieves all todo objects from back4app using get func fetchalltodos() (\[]todo, error) { req, err = http newrequest("get", "https //parseapi back4app com/classes/todo", nil) if err != nil { return nil, err } req header set("x parse application id", "your application id") req header set("x parse rest api key", "your rest api key") client = \&http client{} resp, err = client do(req) if err != nil { return nil, err } defer resp body close() if resp statuscode != http statusok { bodybytes, = ioutil readall(resp body) return nil, fmt errorf("api error %s", string(bodybytes)) } // parse response for "results" key var result struct { results \[]todo `json "results"` } if err = json newdecoder(resp body) decode(\&result); err != nil { return nil, err } return result results, nil } in questi esempi, creiamo un client http, aggiungiamo le intestazioni necessarie e gestiamo i codici di risposta insieme ai messaggi di errore ricorda di sostituire your application id e your rest api key con le chiavi effettive del tuo progetto back4app lettura e scrittura dei dati utilizzando l'api graphql back4app fornisce anche un endpoint graphql su https //parseapi back4app com/graphql puoi utilizzare una popolare libreria client go graphql (come machine box graphql https //github com/machinebox/graphql ) per eseguire query o mutazioni questo può essere un approccio più strutturato rispetto alle chiamate rest raw lavorare con le query live (opzionale) se desideri vedere aggiornamenti in tempo reale nella tua app, puoi abilitare le query live nel dashboard di back4app golang non ha una libreria ufficiale per le query live di parse tuttavia, puoi implementare la tua connessione websocket per ascoltare gli aggiornamenti delle query live da wss\ //your subdomain b4a io questa funzionalità è utile per app collaborative che richiedono una sincronizzazione immediata dei dati passo 3 – applicare la sicurezza con acl e clp panoramica back4app fornisce liste di controllo degli accessi (acl) e permessi a livello di classe (clp) per proteggere i tuoi dati le acl sono definite su ciascun oggetto, mentre i clp definiscono regole generali per un'intera classe permessi a livello di classe vai alla database della tua app in back4app seleziona una classe (ad es , todo ) clicca su permessi a livello di classe e imposta l'accesso in lettura/scrittura per diversi ruoli utente o accesso pubblico acl puoi passare un acl quando crei o aggiorni un oggetto tramite chiamate rest questo garantisce che solo determinati utenti o ruoli possano leggere/scrivere i dati per ulteriori dettagli, visita linee guida sulla sicurezza dell'app https //www back4app com/docs/security/parse security passo 4 – scrivere funzioni di cloud code perché cloud code il cloud code ti consente di eseguire funzioni lato server, trigger o validazioni—senza gestire i tuoi server puoi aggiungere logica aziendale avanzata o integrare api esterne dal lato server esempio di funzione cloud un semplice esempio è una funzione che calcola la lunghezza del testo nel tuo main js file nel dashboard di back4app parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); distribuzione distribuisci il cloud code in uno dei seguenti modi back4app cli back4app dashboard sotto cloud code > functions incolla il tuo codice nell' main js editor e clicca su distribuisci chiamare le funzioni cloud da golang puoi chiamare una funzione cloud tramite rest dal tuo client http func callcalculatetextlength(txt string) (int, error) { body, = json marshal(map\[string]string{"text" txt}) req, err = http newrequest("post", "https //parseapi back4app com/functions/calculatetextlength", bytes newbuffer(body)) if err != nil { return 0, err } // headers req header set("x parse application id", "your application id") req header set("x parse rest api key", "your rest api key") req header set("content type", "application/json") client = \&http client{} resp, err = client do(req) if err != nil { return 0, err } defer resp body close() if resp statuscode != http statusok { bodybytes, = ioutil readall(resp body) return 0, fmt errorf("api error %s", string(bodybytes)) } var result struct { result map\[string]int `json "result"` } if err = json newdecoder(resp body) decode(\&result); err != nil { return 0, err } return result result\["length"], nil } passo 5 – configurazione dell'autenticazione abilita l'autenticazione dell'utente back4app utilizza una user classe per l'autenticazione quando crei un nuovo utente tramite rest, il backend memorizzerà le credenziali in modo sicuro e genererà un token di sessione curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"username" "alice", "password" "secret123", "email" "alice\@example com"}' \\ https //parseapi back4app com/users utilizza il token di sessione restituito per le richieste successive che richiedono privilegi utente in go, invieresti lo stesso tipo di richiesta http da un client http come dimostrato in precedenza accesso sociale per gli accessi sociali come google o facebook, dovrai configurare le impostazioni oauth su back4app questi flussi spesso comportano lo scambio di token consulta la documentazione per l'accesso con apple / accesso sociale https //www back4app com/docs/platform/sign in with apple per dettagli passaggio 6 – gestione dello storage dei file impostazione e caricamento puoi memorizzare file su back4app inviandoli come dati codificati in base64 o multipart/form data curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{ "file" { "name" "myimage png", " type" "file", "base64" "ivborw0kggoaaaansuheugaa " } }' \\ https //parseapi back4app com/files/myimage png dopo il caricamento, puoi allegare il file a un oggetto memorizzando l'url del file restituito o il puntatore del file in go, crea una richiesta http nello stesso modo assicurati solo di codificare correttamente il contenuto del file passaggio 7 – verifica email e ripristino password importanza la verifica dell'email assicura che gli utenti controllino l'email fornita, mentre il ripristino della password li aiuta a recuperare gli account entrambe le funzionalità aumentano la sicurezza e la fiducia abilitare la verifica email vai al tuo back4app dashboard sotto impostazioni email , abilita le email di verifica personalizza i tuoi modelli email se necessario quando un utente si registra, un'email di verifica viene inviata automaticamente ripristino password usa il endpoint rest requestpasswordreset https //docs parseplatform org/rest/guide/#r passwordreset per avviare un ripristino della password curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"email" "alice\@example com"}' \\ https //parseapi back4app com/requestpasswordreset passo 8 – pianificazione dei compiti con cloud jobs cosa fanno i cloud jobs i cloud jobs vengono eseguiti secondo un programma per automatizzare compiti come la pulizia dei dati obsoleti o l'invio di newsletter settimanali parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); // remove records older than 30 days // }); distribuisci questo lavoro e programmarlo nel tuo back4app dashboard > impostazioni app > impostazioni server > lavori in background passo 9 – integrazione dei webhook perché i webhook i webhook ti permettono di notificare servizi esterni quando si verificano determinati eventi ad esempio, potresti inviare avvisi slack quando vengono creati nuovi elementi todo vai alla sezione dei webhook nel tuo back4app dashboard configura il tuo endpoint (come https //your external service com/webhook ) assegna i trigger (ad esempio, aftersave su todo ) puoi anche attivare api esterne dal cloud code scrivendo una richiesta http client se preferisci un controllo diretto degli eventi passo 10 – esplorare il pannello di amministrazione di back4app panoramica l'app admin di back4app è un'interfaccia point and click che puoi condividere con membri del team non tecnici per gestire i dati abilita l'app admin vai su altro > app admin nel tuo dashboard di back4app abilita e crea un utente admin usa il tuo sottodominio scelto per accedere a un'interfaccia semplice per la manipolazione dei dati questo ti libera dalla scrittura di query dirette o codice personalizzato per eseguire operazioni di base conclusione in questa guida, hai scoperto come costruire un backend per golang utilizzando back4app hai esplorato come connetterti al database tramite api restful, applicare misure di sicurezza con acl e clp, eseguire attività programmate con cloud jobs, integrare servizi esterni utilizzando webhook e impostare l'autenticazione degli utenti e lo storage dei file con il pacchetto http di go e le robuste funzionalità di back4app, puoi creare un backend potente che risparmia tempo e scala senza sforzo ora che hai padroneggiato le basi, puoi estendere la logica della tua funzione handler di golang, connetterti a nuovi endpoint api e costruire un'applicazione ricca che soddisfi le tue esigenze prossimi passi affina la tua app golang aggiungi funzionalità avanzate come accesso basato su ruoli, o ottimizza il tuo server http per la produzione scopri di più sulle query in tempo reale integra live queries per app collaborative esplora la documentazione avanzata di back4app ottimizza le tue acl, log e analisi incorpora api di terze parti usa cloud code o webhook diretti per espandere la funzionalità del tuo backend