Quickstarters
Feature Overview
Come costruire un backend per Flask?
41 min
introduzione in questo tutorial, imparerai come costruire un backend per flask utilizzando back4app flask è un framework backend leggero che gestisce le richieste http con facilità e funziona in modo efficiente in modalità debug durante lo sviluppo 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 per la tua applicazione flask 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 utilizzeremo codice python per connettere flask al server parse di back4app 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 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 flask di base puoi installare flask tramite pip install flask assicurati di avere python 3 7+ installato sul tuo computer pip install parse questo pacchetto python consente alla tua app flask di interagire con il parse server di back4app familiarità con i concetti di python e flask documentazione ufficiale di flask https //flask palletsprojects com/en/2 2 x/ se sei nuovo in flask, 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 flask locale pronto ti aiuterà a seguire più facilmente passo 1 – creare un nuovo progetto su back4app e connettersi crea un nuovo progetto il primo passo per costruire il tuo backend flask 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, “flask backend tutorial”) una volta creato il progetto, lo vedrai elencato nel tuo dashboard di back4app questo progetto è la base di tutte le configurazioni del backend collegare il parse sdk a flask 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 flask a back4app implica l'installazione del parse pacchetto python e la sua 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” per trovare il tuo id applicazione e chiave client (o chiave api rest se necessario) troverai anche l' url del server parse (spesso nel formato https //parseapi back4app com ) installa il parse python sdk nel tuo ambiente flask eseguendo pip install parse inizializza parse nella tua applicazione flask crea un file (ad es , parse config py ) in una directory chiamata app o dove preferisci memorizzare i tuoi moduli backend parse config py import parse \# replace the placeholders with your back4app credentials parse application id = "your application id" parse client key = "your client key" parse server url = "https //parseapi back4app com" poi, nel tuo file principale dell'app flask (ad esempio, app py ), puoi importare i moduli dell'app flask insieme alla tua configurazione parse from flask import flask, request, jsonify import parse config # this ensures parse is already set up app = flask( name ) @app route('/') def index() return "hello, flask + back4app!" if name == ' main ' app run(debug=true) # the debug mode helps in local development server completando questo passaggio, hai stabilito una connessione sicura tra le tue rotte front end flask e il backend back4app tutte le richieste e le transazioni di dati vengono instradate in modo sicuro attraverso il codice python di parse, riducendo la complessità delle chiamate rest o graphql manuali (anche se puoi comunque usarle quando necessario) passo 2 – configurazione del database creazione di un modello di dati prima di iniziare, parliamo della configurazione del database puoi progettare il tuo schema dati nel dashboard di back4app o lasciare che parse lo crei al volo ad esempio, potresti creare una classe chiamata “todo” con campi come title e iscompleted naviga nella sezione “database” nel tuo dashboard di back4app crea una nuova classe (ad esempio, “todo”) e aggiungi colonne pertinenti, come title (string) e iscompleted (boolean) back4app supporta vari tipi di dati, come string , number , boolean , object , date , file , pointer , array , relation , geopoint , e polygon puoi scegliere il tipo appropriato per ciascun campo creare un modello di dati utilizzando l'agente ai se preferisci un approccio automatizzato, puoi anche utilizzare l'agente ai di back4app apri l'agente ai dal tuo cruscotto dell'app descrivi il tuo modello di dati in linguaggio semplice (ad es , “crea una classe todo con i campi titolo e iscompleted in back4app ”) lascia che l'agente ai crei lo schema per te leggere e scrivere dati utilizzando sdk in flask, puoi creare e recuperare dati importando parse dal tuo parse config py inizializzazione from flask import flask, request, jsonify import parse import parse config app = flask( name ) @app route('/create todo', methods=\['post']) def create todo() data = request get json() # import json to parse the payload title = data get('title') is completed = data get('iscompleted', false) todo = parse object factory('todo') todo item = todo() todo item title = title todo item iscompleted = is completed try saved todo = todo item save() return jsonify({"success" true, "objectid" saved todo objectid}), 200 except exception as e return jsonify({"error" str(e)}), 400 @app route('/fetch todos', methods=\['get']) def fetch todos() todo = parse object factory('todo') query = todo query try todos = query find() \# convert to json compatible response results = \[{"objectid" t objectid, "title" t title, "iscompleted" t iscompleted} for t in todos] return jsonify(results), 200 except exception as e return jsonify({"error" str(e)}), 400 if name == ' main ' app run(debug=true) questo file dell'app flask gestisce le richieste http per creare e leggere elementi todo nel tuo database back4app lettura e scrittura dei dati utilizzando l'api rest se preferisci chiamate rest dirette, puoi testare con curl dalla linea di comando 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 lettura e scrittura dei dati utilizzando l'api graphql allo stesso modo, back4app fornisce un endpoint graphql ad esempio mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } from flask import flask, request, jsonify import parse import parse config app = flask( name ) @app route('/create todo', methods=\['post']) def create todo() data = request get json() # import json to parse the payload title = data get('title') is completed = data get('iscompleted', false) todo = parse object factory('todo') todo item = todo() todo item title = title todo item iscompleted = is completed try saved todo = todo item save() return jsonify({"success" true, "objectid" saved todo objectid}), 200 except exception as e return jsonify({"error" str(e)}), 400 @app route('/fetch todos', methods=\['get']) def fetch todos() todo = parse object factory('todo') query = todo query try todos = query find() \# convert to json compatible response results = \[{"objectid" t objectid, "title" t title, "iscompleted" t iscompleted} for t in todos] return jsonify(results), 200 except exception as e return jsonify({"error" str(e)}), 400 if name == ' main ' app run(debug=true) lavorare con le query live (opzionale) se hai bisogno di aggiornamenti in tempo reale , back4app fornisce query live in uno scenario flask, di solito utilizzeresti una libreria di sottoscrizione separata lato client o lato server che può mantenere una connessione websocket al server di query live di back4app abilita le query live nel tuo dashboard di back4app sotto le impostazioni del server usa un client parse livequery che si connette a wss\ //your subdomain here b4a io e ascolta eventi di creazione/aggiornamento/cancellazione passo 3 – applicare la sicurezza con acl e clp breve panoramica back4app fornisce liste di controllo degli accessi (acl) e permessi a livello di classe (clp) per proteggere i dati le acl si applicano a singoli oggetti, mentre i clp si applicano all'intera classe questo ti aiuta a limitare o consentire operazioni di lettura/scrittura per utente, ruolo o pubblico impostare i permessi a livello di classe vai al tuo dashboard di back4app , seleziona la tua app e apri la sezione database seleziona una classe (ad esempio, “todo”) apri la scheda delle autorizzazioni a livello di classe configura le tue impostazioni predefinite, come “richiede autenticazione” o “nessun accesso ” configurare le acl nel codice puoi applicare le acl nel codice python @app route('/create private todo', methods=\['post']) def create private todo() data = request get json() user id = data get('userid') title = data get('title') \# assume you have a pointer to the user or a way to get user from id parseuser = parse user user query = parseuser query user obj = user query get(user id) todo = parse object factory('todo') todo item = todo() todo item title = title acl = parse acl() acl setreadaccess(user obj, true) acl setwriteaccess(user obj, true) acl setpublicreadaccess(false) acl setpublicwriteaccess(false) todo item acl = acl saved todo = todo item save() return jsonify({"success" true, "objectid" saved todo objectid}), 200 passo 4 – scrivere funzioni di cloud code perché cloud code il cloud code è perfetto per eseguire codice python (o javascript in altri scenari) lato server, così non devi ospitare la tua infrastruttura puoi eseguire attività come la validazione dei dati, l'esecuzione di calcoli complessi o l'integrazione con servizi esterni direttamente dal server parse funzione di esempio poiché l'ambiente cloud code predefinito per back4app utilizza node js, scriveresti il tuo cloud code in javascript tuttavia, puoi comunque attivare questi script lato server dalla tua app flask ad esempio, una funzione cloud di node js potrebbe apparire così 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 usa il back4app cli https //www back4app com/docs/local development/parse cli per distribuire il tuo cloud code \# step 1 install the cli curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash \# step 2 configure your account key b4a configure accountkey \# step 3 deploy your code b4a deploy in alternativa, puoi distribuire tramite il dashboard di back4app incollando il tuo codice js in cloud code > funzioni e cliccando su “distribuisci ” chiamare la tua funzione in flask, puoi chiamare quella funzione cloud utilizzando rest import requests @app route('/text length', methods=\['post']) def get text length() data = request get json() text = data get('text') url = "https //parseapi back4app com/functions/calculatetextlength" headers = { "x parse application id" "your app id", "x parse rest api key" "your rest api key", "content type" "application/json" } payload = {"text" text} response = requests post(url, json=payload, headers=headers) return jsonify(response json()), response status code passo 5 – configurazione dell'autenticazione abilita o configura l'autenticazione degli utenti nel dashboard di back4app back4app sfrutta la user classe per impostazione predefinita parse gestisce l'hashing delle password, i token di sessione e lo storage sicuro puoi gestire queste funzionalità nelle tue impostazioni dell'app esempi di codice @app route('/signup', methods=\['post']) def sign up user() data = request get json() username = data get('username') password = data get('password') email = data get('email') user = parse user() user username = username user password = password user email = email try user sign up() return jsonify({"success" true}), 200 except exception as e return jsonify({"error" str(e)}), 400 @app route('/login', methods=\['post']) def log in user() data = request get json() username = data get('username') password = data get('password') try parse user login(username, password) return jsonify({"success" true}), 200 except exception as e return jsonify({"error" str(e)}), 400 accesso sociale back4app e parse possono integrarsi con fornitori sociali come google, apple o facebook i dettagli di configurazione variano, quindi fai riferimento alla documentazione del login sociale di parse https //www back4app com/docs/platform/sign in with apple passo 6 – gestione dello storage dei file impostazione dello storage dei file puoi caricare file nel tuo database parse da flask creando un parse file() oggetto nell'ambiente basato su node, oppure puoi utilizzare chiamate rest dirette da python se memorizzi riferimenti a questi file nelle tue classi, diventano facilmente recuperabili @app route('/upload file', methods=\['post']) def upload file() file = request files\['file'] # from an html form or an api call file name = file filename url = "https //parseapi back4app com/files/" + file name headers = { "x parse application id" "your app id", "x parse rest api key" "your rest api key", "content type" file content type } response = requests post(url, data=file read(), headers=headers) return jsonify(response json()), response status code esempio dopo aver caricato un file, riceverai un url del file che puoi memorizzare nel tuo database puoi quindi visualizzare o fare riferimento a quel file nel tuo modello html secondo necessità passo 7 – verifica email e reimpostazione password panoramica la verifica dell'email garantisce indirizzi email validi e la reimpostazione della password aiuta gli utenti a recuperare l'accesso all'account in modo sicuro configurazione del dashboard di back4app vai alle tue impostazioni email nel dashboard di back4app abilita la verifica email e configura i modelli email abilita la reimpostazione della password per inviare link di recupero password all'email dell'utente codice/implementazione una volta abilitato, ogni nuovo utente che si registra con un'email riceve un link di verifica per la reimpostazione della password, puoi chiamare i metodi integrati di parse tramite rest o dalle tue rotte flask passo 8 – pianificazione dei compiti con cloud jobs cosa fanno i cloud jobs i cloud jobs ti permettono di pianificare attività in background come la pulizia dei dati o l'invio di email periodiche ad esempio, puoi eliminare record vecchi ogni giorno senza intervento dell'utente 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); 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); } }); poi, dal tuo dashboard di back4app vai a impostazioni app > impostazioni server > attività in background pianifica questo lavoro per essere eseguito quotidianamente o all'intervallo che preferisci passo 9 – integrazione dei webhook definizione webhooks consentono alla tua app back4app di inviare dati a servizi esterni ogni volta che si verificano determinati trigger questo è utile per integrazioni con gateway di pagamento, slack, analisi o qualsiasi servizio di terze parti configurazione naviga alla configurazione dei webhook nel tuo dashboard di back4app > altro > webhooks aggiungi un nuovo webhook imposta l'endpoint (ad esempio, https //your external service com/webhook endpoint https //your external service com/webhook endpoint ) seleziona i trigger per i quali il webhook verrà attivato esempio se desideri notificare un canale slack ogni volta che viene creato un nuovo record in “todo,” imposta l'url del webhook di slack poi, ogni volta che un nuovo todo viene salvato, slack riceverà una richiesta post contenente i suoi dettagli passo 10 – esplorare il pannello di amministrazione di back4app l' app di amministrazione di back4app fornisce un'interfaccia user friendly per i membri non tecnici del tuo team è un' interfaccia centrata sul modello per operazioni crud e compiti a livello aziendale dove trovarlo vai al tuo dashboard dell'app seleziona altro > app admin e abilitalo crea un utente admin e scegli un sottodominio per ospitare il pannello una volta abilitato, puoi accedere con le tue credenziali admin per gestire i dati in modo più conveniente—senza scrivere endpoint o query personalizzati nel tuo codice python conclusione seguendo questo tutorial completo, hai creato un backend sicuro per un'app flask 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 dei file opzionali pianificato cloud jobs per attività di background automatizzate utilizzato webhook per integrarsi con servizi esterni esplorato il pannello di amministrazione di back4app per la gestione dei dati con un solido framework backend flask che può restituire file di template renderizzati (se desiderato) e una robusta configurazione di back4app, sei ora attrezzato per sviluppare applicazioni ricche di funzionalità, scalabili e sicure puoi eseguire il tuo comando flask run per avviare il server di sviluppo e continuare a programmare la riga di comando i compiti diventano semplici con metodi post def percorsi che accettano payload json prossimi passi costruisci un'app flask 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