Quickstarters
Feature Overview
How to Build a Backend for Kotlin?
39 min
introduzione in questo tutorial, imparerai a costruire un backend completo per un'applicazione android (scritta in kotlin) utilizzando back4app esploreremo l'integrazione delle funzionalità essenziali di back4app—compresi 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 la tua app android 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 durante il percorso, acquisirai esperienza pratica con funzionalità chiave, comprese le funzionalità di sicurezza avanzate, la pianificazione di attività con cloud jobs e la configurazione di webhook per integrazioni esterne alla fine di questo tutorial, sarai ben preparato per migliorare questa configurazione di base in un'applicazione pronta per la produzione, o per incorporare facilmente logica personalizzata e api di terze parti secondo necessità prerequisiti 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 android/kotlin di base assicurati di avere android studio installato sul tuo computer puoi seguire la documentazione ufficiale di configurazione di android studio https //developer android com/studio se non l'hai ancora configurato un minimo di android 4 0 o superiore nella configurazione gradle della tua app tipicamente, imposterai questo nel tuo minsdkversion nella build gradle del tuo modulo familiarità con kotlin e concetti di base di android documentazione per sviluppatori android https //developer android com/docs se sei nuovo in android o kotlin, rivedi la documentazione ufficiale o un tutorial per principianti prima di iniziare assicurati di avere tutti questi prerequisiti in atto prima di iniziare avere il tuo progetto back4app configurato e il tuo ambiente android locale pronto ti aiuterà a seguire più facilmente passo 1 – configurare il progetto back4app crea un nuovo progetto il primo passo per costruire il tuo backend android 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, “android kotlin 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 collegare il parse sdk back4app si basa sulla parse platform per gestire i tuoi dati, fornire funzionalità in tempo reale, gestire l'autenticazione degli utenti e altro ancora integrare la tua app android con back4app comporta l'aggiunta delle dipendenze del parse android sdk ai tuoi file gradle e la loro inizializzazione con le credenziali dal tuo dashboard di back4app recupera le tue chiavi parse nel tuo dashboard di back4app, vai alla sezione “impostazioni app” o “sicurezza e chiavi” della tua app per trovare il tuo id applicazione e chiave client troverai anche l' url del server parse (spesso nel formato https //parseapi back4app com ) aggiungi il parse sdk ai tuoi build gradle file nel tuo build gradle principale (livello progetto) allprojects { repositories { maven { url "https //jitpack io" } } } nel tuo build gradle a livello di modulo (di solito app/build gradle ) dependencies { implementation "com github parse community parse sdk android\ parse\ latest version here" } inizializza parse nella tua applicazione android crea una applicazione personalizzata (ad es , app kt ) se non ne hai già una package com example app import android app application import com parse parse import com parse parseinstallation class app application() { override fun oncreate() { super oncreate() // initialize parse parse initialize( parse configuration builder(this) applicationid("your app id") // from back4app dashboard clientkey("your client key") // from back4app dashboard server("https //parseapi back4app com/") build() ) // (optional) track statistics around app opens parseinstallation getcurrentinstallation() saveinbackground() } } successivamente, apri il tuo androidmanifest xml e registra la applicazione personalizzata \<?xml version="1 0" encoding="utf 8"?> \<manifest xmlns\ android="http //schemas android com/apk/res/android" package="com example app"> \<application android\ name=" app" android\ icon="@mipmap/ic launcher" android\ label="@string/app name" android\ usescleartexttraffic="true" > \</application> \</manifest> completando questo passaggio, hai stabilito una connessione sicura tra il tuo front end android (kotlin) e il backend di back4app tutte le richieste e le transazioni di dati vengono instradate in modo sicuro attraverso questo sdk, riducendo la complessità delle chiamate rest o graphql manuali (anche se puoi comunque utilizzarle quando necessario) passo 2 – configurazione del database salvataggio e query dei dati con il tuo progetto back4app configurato e il parse sdk integrato nella tua app android, puoi ora iniziare a salvare e recuperare dati di seguito è riportato un esempio che utilizza kotlin per creare e recuperare dati import com parse parseobject import com parse parsequery import com parse savecallback import com parse parseexception // example create a todo item fun createtodoitem(title string, iscompleted boolean) { val todo = parseobject("todo") todo put("title", title) todo put("iscompleted", iscompleted) todo saveinbackground { e parseexception? > if (e == null) { println("todo saved successfully") } else { println("error saving todo ${e localizedmessage}") } } } // example query all todo items fun fetchtodos() { val query = parsequery\<parseobject>("todo") query findinbackground { results, e > if (e == null) { println("fetched todo items ${results size}") } else { println("error fetching todos ${e localizedmessage}") } } } in alternativa, puoi utilizzare gli endpoint api rest di back4app 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 back4app fornisce anche un'interfaccia graphql mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } queste diverse opzioni ti consentono di integrare le operazioni sui dati nel modo che meglio si adatta al tuo processo di sviluppo, sia attraverso il parse sdk, rest o graphql 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 i tuoi 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 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—diciamo, un category oggetto che punta a più todo elementi—puoi usare pointers o relations in parse ad esempio, aggiungere un puntatore a un category // linking a todo to a category with a pointer fun createtaskforcategory(categoryobjectid string, title string) { val todo = parseobject("todo") val categorypointer = parseobject("category") categorypointer objectid = categoryobjectid todo put("title", title) todo put("category", categorypointer) todo saveinbackground { e > if (e == null) { println("created task with category relationship") } else { println("error creating task ${e localizedmessage}") } } } quando interroghi, puoi anche includere i dati del puntatore val query = parsequery getquery\<parseobject>("todo") query include("category") query findinbackground { todos, e > if (e == null) { println("fetched ${todos size} todos with category data") } } questa include("category") chiamata recupera i dettagli della categoria insieme a ciascun todo, rendendo i tuoi dati relazionali facilmente accessibili query in tempo reale per aggiornamenti in tempo reale, back4app fornisce live queries puoi iscriverti ai cambiamenti in una classe specifica dalla tua app android abilita le live queries nel tuo dashboard di back4app sotto le impostazioni del server della tua app inizializza una sottoscrizione a una live query nel tuo codice import com parse parselivequeryclient import com parse parsequery import com parse subscriptionhandling val parselivequeryclient = parselivequeryclient factory getclient() val parsequery = parsequery\<parseobject>("todo") val subscriptionhandling subscriptionhandling\<parseobject> = parselivequeryclient subscribe(parsequery) subscriptionhandling handleevent(subscriptionhandling event create) { querytodo, todo > println("new todo created ${todo getstring("title")}") } subscriptionhandling handleevent(subscriptionhandling event update) { querytodo, todo > println("todo updated ${todo getstring("title")}") } subscriptionhandling handleevent(subscriptionhandling event delete) { querytodo, todo > println("todo deleted ${todo getstring("title")}") } ogni volta che un nuovo todo viene creato, aggiornato o eliminato, il client riceve un callback in tempo reale—perfetto per app collaborative o dinamiche passo 3 – applicare la sicurezza con acl e clp meccanismo di sicurezza di back4app back4app prende sul serio la sicurezza fornendo liste di controllo degli accessi (acl) e permessi a livello di classe (clp) 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 liste di controllo degli accessi (acl) un acl è applicato a oggetti individuali per determinare quali utenti, ruoli o il pubblico possono eseguire operazioni di lettura/scrittura ad esempio fun createprivatetodo(title string, owneruser parseobject) { val todo = parseobject("todo") todo put("title", title) // create an acl granting read/write access only to the owner val acl = com parse parseacl(owneruser) acl publicreadaccess = false acl publicwriteaccess = false todo acl = acl todo saveinbackground { e > if (e == null) { println("saved private todo") } else { println("error ${e localizedmessage}") } } } permessi a livello di classe (clp) i clp governano i permessi predefiniti di un'intera classe, come se la classe sia leggibile o scrivibile pubblicamente vai al tuo dashboard di back4app , seleziona la tua app e apri la database sezione seleziona una classe (ad esempio, “todo”) apri il tab dei permessi a livello di classe configura i tuoi predefiniti, come “richiede autenticazione” per la lettura o la scrittura, o “nessun accesso” per il pubblico passo 4 – scrivere funzioni di cloud code il cloud code ti consente di eseguire codice javascript personalizzato simile a kotlin su parse server (caricato come js file), senza dover gestire l'infrastruttura del server questo è ideale per la logica aziendale, le convalide, i trigger e le chiamate api esterne come funziona di solito posizioni le funzioni javascript, i trigger e eventuali moduli npm richiesti in un main js file questo file viene distribuito al tuo progetto back4app e viene eseguito nell'ambiente del parse server casi d'uso tipici logica aziendale validazioni dei dati trigger (come beforesave , aftersave ) applicazione della sicurezza integrazioni con api di terze parti distribuisci la tua funzione di seguito è riportata una semplice funzione cloud code main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); distribuendo tramite il https //www back4app com/docs/local development/parse cli # for linux/mac curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash \# for windows, download the exe from the releases page quindi configura e distribuisci b4a configure accountkey b4a deploy chiamare la tua funzione dal tuo codice android (kotlin) tramite il parse sdk import com parse parsecloud import com parse functioncallback import com parse parseexception fun calltextlengthfunction(sometext string) { val params = hashmapof("text" to sometext) parsecloud callfunctioninbackground\<map\<string, any>>("calculatetextlength", params) { result, e > if (e == null) { val length = result\["length"] as int println("text length $length") } else { println("error calling cloud code ${e localizedmessage}") } } } puoi anche chiamarlo tramite rest o graphql in modo simile passo 5 – configurazione dell'autenticazione autenticazione utente in back4app back4app sfrutta la classe parse user per l'autenticazione parse gestisce l'hashing sicuro delle password, i token di sessione e altro ancora out of the box impostazione dell'autenticazione utente in kotlin, puoi creare un nuovo utente import com parse parseuser fun signupuser(username string, password string, email string) { val user = parseuser() user username = username user setpassword(password) user email = email user signupinbackground { e > if (e == null) { println("user signed up successfully!") } else { println("error signing up user ${e localizedmessage}") } } } accedi a un utente esistente fun loginuser(username string, password string) { parseuser logininbackground(username, password) { user, e > if (user != null && e == null) { println("user logged in ${user username}") } else { println("error logging in ${e? localizedmessage}") } } } le connessioni sociali come google, facebook e apple possono anche essere integrate controlla documentazione sul login sociale https //www back4app com/docs/platform/sign in with apple per dettagli gestione delle sessioni parse gestisce automaticamente i token di sessione puoi accedere all'utente attuale val currentuser = parseuser getcurrentuser() if (currentuser != null) { println("currently logged in user ${currentuser username}") } else { println("no user is logged in") } e disconnettersi parseuser logout() passo 6 – gestione dello storage dei file caricamento e recupero di file parse include la parsefile classe per gestire i caricamenti di file import com parse parsefile import com parse parseexception fun uploadimage(file java io file) { val bytes = file readbytes() val parsefile = parsefile(file name, bytes) parsefile saveinbackground { e parseexception? > if (e == null) { println("file saved ${parsefile url}") } else { println("error uploading file ${e localizedmessage}") } } } sicurezza dei file puoi controllare chi può caricare o scaricare file regolando acl e clp o utilizzando impostazioni specifiche per i file nella configurazione del server parse passo 7 – verifica email e reimpostazione della password abilita la verifica email nelle impostazioni del tuo dashboard back4app configura il tuo indirizzo di invio, i modelli email o un dominio personalizzato se desiderato usa parseuser requestpasswordresetinbackground(email, callback) per attivare un flusso di reimpostazione della password nella tua app passo 8 – pianificazione dei compiti con cloud jobs i cloud jobs ti permettono di automatizzare compiti di routine come la pulizia dei dati o l'invio di notifiche periodiche parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo') const query = new parse query(todo) // e g , remove todos older than 30 days const cutoff = new date(date now() 30 24 60 60 1000) query lessthan('createdat', cutoff) const oldtodos = await query find({ usemasterkey true }) await parse object destroyall(oldtodos, { usemasterkey true }) return `deleted ${oldtodos length} old todos ` }) pianifica il lavoro nel tuo dashboard back4app sotto impostazioni del server > lavori in background passaggio 9 – integrazione dei webhook webhook consentono alla tua app back4app di inviare richieste http a un servizio esterno ogni volta che si verificano determinati eventi aggiungi un webhook nel tuo dashboard di back4app sotto altro > webhook configura i trigger (ad esempio, dopo aver salvato un nuovo oggetto) aggiungi un endpoint url (come un webhook di slack o stripe) passaggio 10 – esplorare il pannello di amministrazione di back4app l' app di amministrazione di back4app è un'interfaccia web amichevole per utenti non tecnici per gestire i dati abilitalo sotto dashboard app > altro > app di amministrazione crea il tuo primo utente amministratore scegli un sottodominio per accedere al pannello di amministrazione accedi per visualizzare, modificare o rimuovere facilmente i record dal tuo database conclusione seguendo questo tutorial completo, hai creato un backend sicuro per un'app android 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 cloud code funzioni 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 dei file opzionali 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 front end android (kotlin) 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 risparmiare innumerevoli ore nella gestione di server e database buon coding! prossimi passi costruire un'app android pronta per la produzione estendendo questo backend per gestire modelli di dati più complessi, strategie di caching e ottimizzazioni delle prestazioni integrare 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