Come creare con successo un’API con Firebase?

Introduzione a Firebase: Una Piattaforma Completa per lo Sviluppo di Applicazioni

Firebase, lanciata nel 2012 e successivamente acquisita da Google nel 2014, si è evoluta da semplice database per applicazioni in tempo reale a una soluzione BaaS (Backend as a Service) estremamente versatile. Inizialmente focalizzata sul database real-time, Google ha riconosciuto il suo potenziale, espandendola con una vasta gamma di servizi aggiuntivi.

Oggi, Firebase si presenta come un ecosistema BaaS che offre ben 18 servizi, semplificando notevolmente il processo di creazione di applicazioni web e mobile. La sua affidabilità e scalabilità sono testimoniate dalla fiducia di aziende leader come Accenture, Alibaba Travels, Stack, Twitch e Instacart, insieme a oltre 2.300 altre realtà.

I Benefici Principali di Utilizzare Firebase

Il servizio di database in tempo reale, con cui Firebase ha fatto il suo ingresso, rimane uno dei punti di forza principali. Questi database, ospitati nel cloud, memorizzano i dati in formato JSON, assicurando una sincronizzazione real-time con tutti i client collegati. Che si utilizzi l’SDK per iOS, Android o JavaScript, tutte le applicazioni connesse condividono un’unica istanza del database, mantenendo sempre aggiornati i dati.

Un altro servizio di rilievo è Cloud Firestore, un database di documenti NoSQL, concepito per semplificare la memorizzazione, la sincronizzazione e la gestione delle query di dati per app mobile e web su scala globale. La possibilità di creare gerarchie per organizzare dati correlati e l’efficacia delle query consentono di sfruttare appieno il potenziale di Cloud Firestore. Le query si adattano alle dimensioni dei risultati e non all’intero set di dati, garantendo la scalabilità delle applicazioni fin dall’inizio.

Oltre a questi, Firebase mette a disposizione anche servizi come hosting, archiviazione di file e funzioni serverless, offrendo una gamma completa di strumenti per lo sviluppo.

Creare API Personalizzate con Firebase

Le API rappresentano un canale essenziale per la fornitura di servizi, sia per le proprie applicazioni che per quelle di terze parti. Firebase permette di creare servizi personalizzati, che sfruttano la potenza della piattaforma, senza doversi preoccupare della complessità di configurare un backend. Per esempio, si potrebbe offrire l’accesso a un database Firebase in tempo reale a terze parti per monitorare dati raccolti da sensori industriali.

Il primo passo per creare una API in Firebase è accedere alla Console Firebase e aggiungere un nuovo progetto. È consigliabile abilitare Google Analytics per ottenere vantaggi come test A/B e report statistici dettagliati sulla propria API.

Dopo aver creato il progetto, si possono selezionare i servizi Firebase da utilizzare nell’API. Per illustrare il processo, esaminiamo come configurare e sfruttare il servizio database Firebase Realtime.

Configurazione di un Database Realtime in Firebase

Nella sezione Sviluppo, nella barra di navigazione sinistra, cliccare su “Database in tempo reale”. A destra comparirà il pulsante “Crea database”, da utilizzare per iniziare la creazione del proprio database Firebase.

Successivamente, occorre selezionare la posizione geografica più adatta per il database. Scegliere la posizione più vicina agli utenti finali è fondamentale per ridurre al minimo la latenza dell’API, soprattutto per applicazioni in tempo reale.

Il passaggio successivo è la configurazione delle regole di sicurezza di base. È possibile iniziare con una modalità “bloccata”, concedendo le autorizzazioni di accesso in modo selettivo, oppure optare per la modalità “test”, che abilita tutte le operazioni di lettura e scrittura.

Per iniziare senza complicazioni, la modalità test è la scelta consigliata. In un secondo momento, è sempre possibile definire regole di sicurezza più dettagliate. Una volta configurato il database, l’API corrispondente sarà automaticamente abilitata nella sezione API e servizi della console personale in Google Cloud Platform.

Programmazione dell’API Firebase

Dopo la configurazione di base del progetto nella console Firebase, il passo successivo è la scrittura del codice API. Questo richiede l’inizializzazione dell’hosting e delle funzioni Firebase sul proprio computer. È possibile installare Firebase-Tools tramite npm:

npm install -g firebase-tools

Successivamente, è necessario accedere a Firebase e inizializzare il progetto con i seguenti comandi:

firebase login firebase init

Dopo il comando apparirà un menu con delle opzioni da selezionare, oltre al percorso di inzio del progetto.

Nel menu selezionare Funzioni e Hosting. L’opzione Hosting permette di avere un URL personalizzato per l’API. Selezionare dall’elenco l’app Firebase creata in precedenza e, infine, la lingua da usare per lo sviluppo. Per una API web, JavaScript è una scelta appropriata.

Se si utilizzano dipendenze esterne, installarle tramite npm nella cartella “functions”. A questo punto, si può procedere con la scrittura del codice delle funzioni. È essenziale includere i pacchetti firebase-functions e firebase-admin, insieme a tutti gli altri pacchetti necessari:

import * as functions from 'firebase-functions'; 
import * as admin from 'firebase-admin';

Per utilizzare il database real-time, è necessario specificare l’URL durante l’inizializzazione dell’SDK JavaScript. L’URL è disponibile nella sezione Database in tempo reale della console Firebase e ha il seguente formato:

https://<nome-database>.<regione>.firebasedatabase.app

Per inizializzare l’SDK, sostituire i segnaposto con i dati relativi al proprio progetto, usando il seguente codice:

var config = {
  apiKey: "apiKey",
  authDomain: "projectId.firebaseapp.com",
  databaseURL: "https://databaseName.firebaseio.com",
  storageBucket: "bucket.appspot.com"
};
firebase.initializeApp(config);
var database = firebase.database();

Una volta scritto il codice della funzione API, si può procedere con il deployment. Prima di questo passaggio, è necessario apportare alcune modifiche al file firebase.json, aggiungendo le seguenti righe adattandole alla configurazione del proprio progetto:

"rewrites": [
     {
       "source": "/api/v1/**",
       "function": "webApi"
     }
]

Il comando per eseguire la distribuzione è il seguente:

firebase deploy

Per le distribuzioni successive, è possibile distribuire solo le funzioni usando il parametro –only functions.

Dopo l’esecuzione del comando “deploy”, la CLI di Firebase mostra l’URL degli endpoint HTTP delle funzioni, da utilizzare per richiamare le API da un’applicazione web. L’URL contiene l’ID del progetto e la regione della funzione HTTP. Ad esempio, l’URL seguente può essere usato per chiamare una funzione di query passando il parametro itemid=1:

https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1

Per eseguire la funzione, aprire l’URL con i parametri in un browser.

È importante ricordare che il deployment nell’ambiente di produzione richiede un abbonamento al piano Firebase Blaze, con pagamento a consumo. L’utilizzo viene fatturato alla fine del mese. In assenza di un abbonamento Blaze, il comando deploy non mostrerà l’URL dell’API, bensì un messaggio che invita ad abbonarsi al piano Blaze per poter distribuire nell’ambiente di runtime. In questo caso, è possibile utilizzare Firebase Local Emulation Suite per sviluppare e testare le applicazioni in locale, evitando costi superflui durante lo sviluppo.

Test Locali e Prototipazione con Firebase Emulator Suite

L’Emulation Suite offre un’interfaccia utente integrata, ideale per testare e prototipare le applicazioni in locale. È possibile effettuare test di database, flussi di lavoro di Cloud Functions, analizzare le prestazioni dei servizi di back-end e valutare le modifiche alle regole di sicurezza, il tutto in un ambiente sicuro.

Per emulare le funzioni o testare l’applicazione in locale, eseguire il comando “firebase emulators:start”. L’emulatore Firestore richiede l’installazione di Java, che può essere scaricato da qui.

L’esecuzione del comando avvia l’interfaccia utente dell’Emulator Suite nel browser, di solito all’indirizzo “localhost:4000”. Viene fornito anche l’URL della funzione HTTP, ad esempio:

https://localhost:5001/apiproject-8753c/us-central1/itemQuery

Per testare la funzione, copiare l’URL dell’emulatore, aggiungendo eventuali parametri e incollandolo in una scheda del browser. I risultati verranno visualizzati nell’interfaccia dell’Emulator Suite. Nella scheda “Log”, si vedrà l’indicazione dell’esecuzione della funzione. La scheda Firestore mostrerà eventuali nuovi dati generati dalla funzione nel database.

Migliorare la Visibilità delle API

Firebase offre un valido aiuto anche per la visibilità delle API. Oltre a semplificare la creazione di applicazioni, velocizzando lo sviluppo dei servizi di back-end, Firebase aiuta anche nel posizionamento del prodotto. Infatti, le applicazioni che utilizzano Firebase tendono ad ottenere un posizionamento migliore nei risultati di ricerca rispetto ad altre.

Un altro strumento utile è l’API di indicizzazione delle app, che migliora il posizionamento dei link alle app nei motori di ricerca. Firebase inserisce il pulsante “Installa” vicino alla home page dell’applicazione, facilitando l’acquisizione di nuovi utenti.

In sintesi, Firebase non solo offre strumenti di back-end che accelerano lo sviluppo delle API, ma aiuta anche a promuoverle e a monetizzarle.