Come costruire con successo un'API con Firebase?
Pubblicato: 2021-09-07Firebase è una piattaforma di sviluppo di applicazioni lanciata nel 2012 e acquisita da Google due anni dopo. All'inizio, Firebase era pensato solo come un database per applicazioni in tempo reale, ma Google ha visto il suo potenziale e ha deciso di aggiungere ulteriori servizi.
Attualmente, Firebase è un sistema BaaS (backend as a service) con 18 servizi per facilitare la creazione di applicazioni web e mobili. Tra le aziende che utilizzano i servizi BaaS di Firebase ci sono Accenture, Alibaba Travels, Stack, Twitch e Instacart, insieme a più di altre 2.300.
Vantaggi dell'utilizzo di Firebase
Il primo dei servizi offerti da Firebase era il suo database in tempo reale, e rimane una delle sue maggiori attrattive. I database Firebase Real-time sono ospitati nel cloud, memorizzano i dati in formato JSON e si sincronizzano in tempo reale con ogni client ad essi connesso. Sia che utilizzi l'SDK iOS, l'SDK Android o l'SDK JavaScript, tutte le applicazioni connesse a un database Firebase Realtime condividono un'istanza del database, sempre aggiornata con i dati più recenti.
Cloud Firestore è un altro interessante servizio Firebase. È un database di documenti NoSQL progettato per facilitare l'archiviazione, la sincronizzazione e l'interrogazione dei dati per app mobili e Web su scala globale. La creazione di gerarchie per archiviare i dati correlati e query espressive per recuperare i dati consentono di realizzare tutto il potenziale di Cloud Firestore. A loro volta, le query scalano in base alla dimensione dei risultati anziché alla dimensione del set di dati. Ciò consente alle applicazioni di scalare dall'inizio senza attendere il momento in cui le esigenze superano la capacità.
Oltre ai suddetti servizi di database, Firebase offre anche servizi di hosting, archiviazione di file, funzioni (in stile AWS Lambda), tra molte altre cose.
Creazione di un'API
Le API sono un modo per fornire servizi per l'utilizzo di app proprie o di terze parti. Firebase ti consente di fornire servizi personalizzati che, a loro volta, utilizzano i servizi di Firebase senza il fastidio di impostare un backend per tali servizi. Potresti, ad esempio, offrire l'accesso a un database in tempo reale Firebase per le applicazioni di terze parti per interrogare le informazioni raccolte dai sensori industriali.
Il primo passaggio nella creazione di un'API in Firebase consiste nell'accedere alla console Firebase e aggiungere un progetto facendo clic su "Aggiungi progetto" e assegnando un nome al nuovo progetto. Google ti darà la possibilità di abilitare Google Analytics per il tuo nuovo progetto. Si consiglia di accettare questa raccomandazione, poiché otterrai vantaggi come i test A/B e un'ampia varietà di rapporti statistici dalla tua API.
Una volta creato il progetto, sarai in grado di selezionare i servizi Firebase che utilizzerà la tua API. Per illustrare questa attività, vedremo come utilizzare il servizio di database Firebase Realtime.
Configurazione di un database in tempo reale in Firebase
Nella barra di navigazione a sinistra, all'interno della sezione Sviluppo, fare clic su Database in tempo reale. Un pulsante "Crea database" apparirà sulla destra. Fai clic su di esso per creare il tuo primo database in Firebase.

Successivamente, dovrai scegliere tra diverse opzioni di posizione geografica per il tuo nuovo database. Seleziona quello più vicino ai tuoi utenti. Questo è un aspetto importante per ridurre al minimo la latenza della tua API, in particolare nelle app in tempo reale.

Il passaggio successivo consiste nel configurare le regole di sicurezza di base per il database. Puoi optare per la modalità bloccata e quindi assegnare le autorizzazioni di accesso secondo necessità, oppure optare per la modalità test, che abilita tutte le letture e le scritture.

Puoi iniziare con l'opzione della modalità di prova per non complicare le impostazioni di sicurezza all'inizio. Puoi sempre creare regole in un secondo momento per impostare la configurazione della sicurezza con maggiore granularità.
Non appena finisci di configurare il tuo database, l'API corrispondente viene abilitata anche nella sezione API e servizi della tua console personale in Google Cloud Platform.
Programmazione dell'API Firebase
A questo punto, hai già gli elementi di base del tuo progetto configurati nella console Firebase. Il prossimo passo è scrivere il tuo codice API. Per fare ciò, dovrai inizializzare l'hosting e le funzioni di Firebase sul tuo computer locale. Puoi installare firebase-tools usando npm:
npm install -g firebase-toolsQuindi puoi accedere a Firebase e inizializzare il tuo progetto con i seguenti comandi:
firebase login firebase initVerrà visualizzata una schermata di benvenuto in cui Firebase ti informa della cartella in cui verrà inizializzato il tuo progetto e verrà visualizzato un menu di opzioni.

In quel menu, seleziona Funzioni e Hosting (l'opzione Hosting ti consentirà di avere un URL personalizzato per l'API che svilupperai). Scegli quindi dall'elenco l'app Firebase che hai creato in precedenza, dopodiché devi selezionare la lingua da utilizzare. Per sviluppare un'API web, puoi optare per JavaScript.

Se utilizzerai le dipendenze del pacchetto, installale con npm all'interno della cartella functions. Quindi puoi iniziare a scrivere il codice per le tue funzioni. Ricorda di includere i pacchetti firebase-functions e firebase-admin, insieme a qualsiasi altro pacchetto di cui hai bisogno:

import * as functions from 'firebase-functions'; import * as admin from 'firebase-admin';Per utilizzare il database in tempo reale, è necessario specificarne l'URL durante l'inizializzazione dell'SDK JavaScript. L'URL si trova nella sezione Realtime Database della console Firebase. Puoi riconoscerlo dal suo formato:
https://<database-name>.<region>.firebasedatabase.appPuoi utilizzare il seguente frammento per inizializzare il tuo SDK, sostituendo i dati che corrispondono all'oggetto di configurazione del tuo progetto:
var config = { apiKey: "apiKey", authDomain: "projectId.firebaseapp.com", databaseURL: "https://databaseName.firebaseio.com", storageBucket: "bucket.appspot.com" }; firebase.initializeApp(config); var database = firebase.database();Dopo aver scritto il codice della tua funzione API, è il momento di distribuirlo. Ma prima di farlo, dovrai apportare alcune modifiche in firebase.json, aggiungendo le seguenti righe, modificate in base alla configurazione del tuo progetto:
"rewrites": [ { "source": "/api/v1/**", "function": "webApi" } ]Il passo successivo è la distribuzione. La prima volta è necessario eseguire una distribuzione completa, eseguendo il comando:
firebase deployNelle distribuzioni successive, sarai in grado di distribuire solo le funzioni, utilizzando il parametro –only functions.
Dopo aver eseguito il comando deploy, Firebase CLI visualizza l'URL degli endpoint HTTP delle tue funzioni nel terminale, che puoi utilizzare per richiamare le tue API da un'applicazione web. L'URL contiene il tuo ID progetto e una regione per la funzione HTTP. Ad esempio, il seguente URL può essere utilizzato per chiamare una funzione di query di un elemento passandogli itemid=1 come parametro:
https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1Per eseguire la funzione, aprire l'URL con i parametri corrispondenti in un browser.
Tieni presente che la distribuzione nell'ambiente di produzione richiede un abbonamento al piano Firebase Blaze, che è a consumo, come puoi leggere nella pagina dei prezzi di Firebase. È un servizio di post-fatturazione, il che significa che ti viene addebitato l'utilizzo alla fine di ogni mese.
Se non disponi di un abbonamento Blaze, il comando deploy non visualizzerà l'URL dell'API. Verrà invece visualizzato un messaggio che informa che è necessario abbonarsi al piano Blaze se si desidera eseguire la distribuzione nell'ambiente runtime. In questo caso, puoi comunque utilizzare Firebase Local Emulation Suite per creare e testare applicazioni sul tuo computer locale invece di distribuirle nell'ambiente di produzione Firebase. Il test locale è utile per evitare costi inutili durante lo sviluppo dell'applicazione, poiché ogni esecuzione di test può generare addebiti sul tuo account.
Test locali e prototipazione
Lo strumento Local Emulator Suite offre un'interfaccia utente integrata che rende la prototipazione facile e utile per testare le tue app sul tuo computer locale.
Con l'interfaccia utente di Emulator Suite, puoi testare i tuoi progetti di database, i tuoi flussi di lavoro di Cloud Functions, analizzare le prestazioni dei servizi di backend e valutare le modifiche alle regole di sicurezza, tra le altre attività. È fondamentalmente una sandbox sicura per testare la funzionalità dell'API prima di inviarla a un ambiente di produzione.
Per emulare le tue funzioni o testare la tua applicazione localmente, esegui firebase emulators:start. Devi avere Java installato per poter usare Firestore Emulator. Se non lo possiedi, puoi installarlo da qui.
Quando invochi Firestore Emulator, il comando restituirà un URL che ti consentirà di aprire l'interfaccia utente di Emulator Suite nel tuo browser. Per impostazione predefinita, questo URL sarà localhost:4000, ma potrebbe variare su ogni macchina.
Riceverai anche un URL completo per la tua funzione HTTP. Questo URL sarà simile a:
http://localhost:5001/apiproject-8753c/us-central1/itemQuerysolo avrà il nome del tuo progetto, il nome della tua funzione e potrebbe anche avere un numero di porta diverso sul tuo computer locale.
Per testare la funzione, copia l'URL restituito dall'emulatore, aggiungendo eventuali parametri necessari (es ?itemid=1) e inseriscilo in una nuova scheda del tuo browser. I risultati dell'esecuzione dell'API verranno visualizzati nell'interfaccia utente di Emulator Suite.
Nella scheda Log, vedrai nuovi log che indicano che la funzione itemQuery() è stata eseguita. Se la tua funzione genera nuovi dati nel database Firestore, li vedrai nella scheda Firestore.
Ottenere più visibilità per la tua API
Se vuoi che le API che sviluppi diventino popolari, Firebase può aiutarti anche in questo. Non solo perché ti consente di creare la tua applicazione più velocemente, eliminando gran parte del lavoro per rendere operativi e operativi i servizi di backend, ma anche aiutandoti con il posizionamento del tuo prodotto. Come è possibile? Semplicemente perché le app associate a Firebase si posizionano meglio nelle classifiche di ricerca rispetto ad altre applicazioni.
Inoltre, prendi in considerazione l'API di indicizzazione delle app di Firebase. Questo strumento migliora le classifiche di ricerca dei collegamenti alle app e aiuta gli utenti a trovare il contenuto desiderato. Inoltre, posiziona il pulsante Installa dopo il pulsante della home page della tua app in modo che gli utenti interessati siano a portata di clic per diventare utenti della tua app.
In conclusione, Firebase non solo ti offre servizi di backend che accelerano notevolmente lo sviluppo della tua API, ma una volta che è attiva, funzionante ed esposta al mondo, ti aiuta anche a promuoverla e a ricavarne profitti.
