Quickstarters
Feature Overview
Come costruire un backend per MacOS?
45 min
introduzione in questo tutorial, imparerai come costruire un backend per macos utilizzando back4app e il parse swift sdk 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 la tua applicazione macos vedrai anche come la rapida configurazione di back4app e l'ambiente intuitivo 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, pianificazione 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 di base in un'applicazione macos pronta per la produzione, o per incorporare facilmente logica personalizzata e api di terze parti secondo necessità padroneggiare questo approccio ti permetterà di semplificare i tuoi flussi di lavoro e imparare a costruire un backend per macos rapidamente ed efficientemente 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 un ambiente di sviluppo macos (xcode) puoi installare xcode dal mac app store https //apps apple com/us/app/xcode/id497799835 swift package manager o cocoapods per installare il parse swift sdk documentazione di parse swift https //github com/netreconlab/parse swift conoscenze di base di swift e sviluppo di app macos documentazione ufficiale di apple https //developer apple com/documentation/swift familiarità con swiftui o appkit è utile assicurati di avere tutti questi requisiti in ordine prima di iniziare avere il tuo progetto back4app impostato e il tuo ambiente di sviluppo macos 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 macos 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, “macos 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 swift 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 collegare la tua applicazione macos a back4app implica installare il parse swift sdk e inizializzarlo 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 (o clientkey ) troverai anche l' url del server parse (spesso nel formato https //parseapi back4app com ) installa il parse swift sdk nel tuo progetto macos se utilizzi swift package manager dependencies \[ package(url "https //github com/netreconlab/parse swift git", from "5 0 0") ] se utilizzi cocoapods , aggiungi questo al tuo podfile pod 'parseswiftog' inizializza parse nella tua applicazione macos (ad esempio, in appdelegate swift se utilizzi appkit, o in una @main struct swiftui se stai costruendo un'app swiftui) import parseswift import swiftui @main struct mymacosapp app { init() { task { do { try await parseswift initialize( applicationid "your application id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } } var body some scene { windowgroup { contentview() } } } completando questo passaggio, hai stabilito una connessione sicura tra il tuo front end macos (ui) 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 se necessario) passo 2 – configurazione del database salvataggio e query dei dati con il tuo progetto back4app configurato e il parse swift sdk integrato nella tua app macos, puoi ora iniziare a salvare e recuperare dati il modo più semplice per creare un oggetto è definire una struct che conforma a parseobject e poi chiamare save() struct todo parseobject { // parseobject required properties var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } func createtodoitem(title string, iscompleted bool) async { var todo = todo() todo title = title todo iscompleted = iscompleted do { try await todo save() print("todo saved successfully ") } catch { print("error saving todo \\(error)") } } func fetchtodos() async > \[todo] { let query = todo query() do { return try await query find() } catch { print("error fetching todos \\(error)") return \[] } } in alternativa, puoi utilizzare l'api rest o graphql 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 swift 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 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 vari tipi di dati string , number , boolean , object , date , file , pointer , array , relation , geopoint , e polygon puoi scegliere il tipo appropriato per ciascun campo, oppure lasciare che parse crei automaticamente queste colonne quando salvi per la prima volta un oggetto dalla tua app macos back4app offre un agente ai che può aiutarti a progettare il tuo modello di dati apri l'agente ai dal tuo dashboard app o nel 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 dati relazionali se hai dati relazionali—diciamo, un category oggetto che punta a più todo elementi—puoi usare pointers o relations in parse swift struct category parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom fields var name string? } struct todo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var title string? var category pointer\<category>? } func createtaskforcategory(categoryobjectid string, title string) async { let pointer = pointer\<category>(objectid categoryobjectid) var todo = todo() todo title = title todo category = pointer do { try await todo save() print("todo linked to category") } catch { print("error creating task with category relationship \\(error)") } } func fetchtodoswithcategory() async { let query = todo query() include("category") do { let todos = try await query find() print("fetched todo items with category \\(todos)") } catch { print("error fetching todos \\(error)") } } query in tempo reale per aggiornamenti in tempo reale, back4app fornisce live queries abilitando le live queries nel tuo dashboard di back4app, puoi iscriverti ai cambiamenti in una classe specifica dalla tua app macos abilita le live queries nel tuo dashboard di back4app sotto le impostazioni del server della tua app inizializza le live queries nel codice (il client live query di swift è ancora in evoluzione, ma puoi utilizzare approcci guidati dalla comunità o aspettare aggiornamenti ufficiali di parse swift) src/parseconfig swift // example (subject to support in parse swift) // live query’s subdomain // parseswift configuration livequeryserverurl = url(string "wss\ //your subdomain here b4a io")! una volta iscritti, riceverai notifiche ogni volta che un nuovo todo viene creato, aggiornato o eliminato questo è particolarmente prezioso per app desktop collaborative o altamente interattive in cui più utenti o processi devono vedere i dati più recenti istantaneamente 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 ad esempio, se la tua app macos ha un concetto di “compiti privati” per l'utente attualmente connesso import parseswift func createprivatetodo(title string) async { guard let currentuser = user current else { return } var todo = todo() todo title = title // create an acl granting read/write access only to the owner var acl = parseacl() acl setreadaccess(currentuser, value true) acl setwriteaccess(currentuser, value true) todo acl = acl do { try await todo save() print("private todo saved") } catch { print("error saving private todo \\(error)") } } quando salvi l'oggetto, ha un acl che impedisce a chiunque tranne l'utente specificato di leggerlo o modificarlo class level permissions (clps) i 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 le tue impostazioni predefinite, come “richiede autenticazione” per la lettura o la scrittura, o “nessun accesso” per il pubblico 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 i propri server o infrastrutture scrivendo 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 cloud code, di solito posizioni le tue funzioni javascript, trigger e eventuali moduli npm richiesti in un main js file poi distribuisci questo file al tuo progetto back4app, e viene eseguito nell'ambiente parse server questo ti consente di mantenere la logica sensibile sul server casi d'uso tipici logica aziendale calcoli o trasformazioni prima di salvare i dati validazioni dei dati assicurati che determinati campi soddisfino i criteri trigger esegui azioni quando i dati cambiano integrazioni collega con api esterne (ad esempio, pagamenti, notifiche) esempio di funzione // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); distribuzione tramite il back4app cli installa il cli 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 chiamare la tua funzione da macos utilizzando swift import parseswift func gettextlength(text string) async { do { let result = try await parsecloud callfunction("calculatetextlength", with \["text" text]) if let resultdict = result as? \[string any], let length = resultdict\["length"] as? int { print("text length \\(length)") } } catch { print("error calling cloud function \\(error)") } } puoi anche chiamarlo tramite rest o graphql, allo stesso modo di altri framework passo 5 – configurazione dell'autenticazione utente autenticazione utente in back4app back4app sfrutta la parseuser classe come base per l'autenticazione per impostazione predefinita, parse gestisce l'hashing delle password, i token di sessione e lo storage sicuro, quindi non devi configurare manualmente flussi di sicurezza complessi impostazione dell'autenticazione utente in un'applicazione macos, puoi creare un nuovo utente con struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // default properties var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupuser(username string, password string, email string) async { var newuser = user() newuser username = username newuser password = password newuser email = email do { newuser = try await newuser signup() print("user signed up successfully!") } catch { print("error signing up user \\(error)") } } func loginuser(username string, password string) async { do { let user = try await user login(username username, password password) print("user logged in \\(user)") } catch { print("error logging in user \\(error)") } } via rest, un login potrebbe apparire così curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login gestione della sessione dopo un accesso riuscito, parse crea un token di sessione puoi accedere all'utente attualmente connesso if let currentuser = user current { print("currently logged in user \\(currentuser username ?? "no username")") } else { print("no user is logged in") } disconnettersi do { try await user logout() } catch { print("error logging out \\(error)") } integrazione del login sociale puoi integrare provider popolari come google, apple o facebook configurando authdata le istruzioni dettagliate variano, quindi fai riferimento a documentazione sul login sociale https //www back4app com/docs/platform/sign in with apple verifica dell'email e reimpostazione della password per abilitare la verifica dell'email e il ripristino della password naviga alle impostazioni email nel tuo dashboard di back4app abilita la verifica dell'email configura l'indirizzo del mittente , i modelli email e il tuo dominio personalizzato se desiderato questo migliora la sicurezza dell'account convalidando le email degli utenti e fornendo un metodo di recupero della password passo 6 – gestione dello storage dei file caricamento e recupero dei file parse include la parsefile classe per gestire i caricamenti di file, che back4app memorizza in modo sicuro func uploadfile(data data) async > parsefile? { let file = parsefile(name "doc txt", data data) do { let savedfile = try await file save() print("file saved ", savedfile url ?? "no url") return savedfile } catch { print("error uploading file ", error) return nil } } allegalo a un oggetto struct photo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var imagefile parsefile? } func createphotoobject(file parsefile) async { var photo = photo() photo imagefile = file do { try await photo save() print("photo object saved!") } catch { print("error saving photo ", error) } } sicurezza dei file puoi configurare la sicurezza del caricamento dei file nelle impostazioni del tuo parse server ad esempio, controllando quali utenti possono caricare o eliminare file tieni presente che se condividi l'url del file, chiunque abbia quell'url può accedervi a meno che tu non abbia impostato regole più severe lato server passo 7 – verifica email e ripristino password panoramica la verifica dell'email e il ripristino delle password sono fondamentali per una gestione sicura degli utenti ne abbiamo già parlato nel passo 5 , ma come promemoria abilita queste funzionalità nel back4app dashboard (impostazioni email) configura i modelli di email per “abilita verifica email” e “ripristino password” testa il flusso dalla tua app macos passo 8 – pianificazione dei compiti con cloud jobs cloud jobs cloud jobs ti consente di pianificare ed eseguire compiti di routine sul tuo backend, come inviare email periodiche o pulire i dati ad esempio // 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); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); distribuisci il tuo cloud code con il nuovo lavoro vai al dashboard di back4app > impostazioni app > impostazioni server > lavori in background pianifica il lavoro (ad esempio, quotidianamente) passo 9 – 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, strumenti di email marketing o piattaforme di analisi naviga nella configurazione dei webhook nel tuo dashboard di back4app > altro > webhooks imposta un endpoint (ad esempio, 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 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 slack per l'evento “nuovo record nella classe todo ” passo 10 – 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 dati di routine senza scrivere codice fornisce un' interfaccia centrata sul modello , facile da usare che semplifica l'amministrazione del database, la gestione dei dati personalizzati e le operazioni a livello aziendale abilitare l'app admin abilita andando su app dashboard > altro > app admin e cliccando su “abilita app admin ” crea un primo utente admin , che genera automaticamente un nuovo ruolo ( b4aadminuser ) e classi pertinenti 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'app admin una volta abilitata, l'app back4app admin rende facile visualizzare, modificare o rimuovere record dal tuo database, senza richiedere l'uso diretto del parse dashboard o del codice backend conclusione seguendo questo tutorial completo, hai creato un backend sicuro per un'app macos 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 front end macos e un robusto backend back4app, sei ora ben attrezzato per sviluppare applicazioni desktop 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 prossimi passi costruisci un'app macos 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 comunicazione in tempo reale, dashboard iot o servizi basati sulla posizione combina le tecniche apprese qui con api di terze parti per creare applicazioni complesse e reali