Hvordan bygge et API med Firebase?

Firebase er en applikasjonsutviklingsplattform lansert i 2012 og kjøpt opp av Google to år senere. I begynnelsen ble Firebase bare tenkt på som en database for sanntidsapplikasjoner, men Google så potensialet og bestemte seg for å legge til flere tjenester til den.

Foreløpig er Firebase et BaaS-system (backend as a service) med 18 tjenester for å lette opprettelsen av nett- og mobilapplikasjoner. Blant selskapene som bruker Firebase sine BaaS-tjenester er Accenture, Alibaba Travels, Stack, Twitch og Instacart, sammen med mer enn 2300 andre.

Fordeler med å bruke Firebase

Den første av tjenestene Firebase tilbød var sanntidsdatabasen, og den er fortsatt en av de største trekkplastrene. Firebase-sanntidsdatabaser er vert i skyen, og lagrer data i JSON-format og synkroniseres i sanntid med hver klient som er koblet til dem. Enten du bruker iOS SDK, Android SDK eller JavaScript SDK, deler alle applikasjoner som er koblet til en Firebase Realtime-database én forekomst av databasen, som alltid holdes oppdatert med de nyeste dataene.

Cloud Firestore er en annen interessant Firebase-tjeneste. Det er en NoSQL-dokumentdatabase designet for å lette datalagring, synkronisering og spørring for mobil- og nettapper på global skala. Opprettelsen av hierarkier for å lagre relaterte data og uttrykksfulle forespørsler for å hente data gjør at det fulle potensialet til Cloud Firestore kan realiseres. På sin side skaleres søk basert på størrelsen på resultatene i stedet for datasettet. Dette gjør at applikasjoner kan skaleres fra begynnelsen uten å vente til det øyeblikket hvor behovene overskrider kapasiteten.

I tillegg til de nevnte databasetjenestene tilbyr Firebase også hostingtjenester, fillagring, funksjoner (AWS Lambda-stil), blant mye annet.

Opprette en API

APIer er en måte å tilby tjenester for egne eller tredjepartsapper å bruke. Firebase lar deg tilby tilpassede tjenester som igjen bruker Firebases egne tjenester uten å måtte sette opp en backend for disse tjenestene. Du kan for eksempel tilby tilgang til en Firebase-sanntidsdatabase for tredjepartsapplikasjoner for å søke etter informasjon samlet inn av industrielle sensorer.

Det første trinnet i å lage en API i Firebase er å få tilgang til Firebase-konsoll og legg til et prosjekt ved å klikke «Legg til prosjekt» og gi det nye prosjektet et navn. Google vil gi deg muligheten til å aktivere Google Analytics for det nye prosjektet ditt. Det anbefales å godta denne anbefalingen, siden du vil få fordeler som A/B-testing og et bredt utvalg av statistiske rapporter fra APIen din.

  Slik ser du Netflix i 4K på en Mac

Når du har opprettet prosjektet ditt, vil du kunne velge Firebase-tjenestene som API-en din skal bruke. For å illustrere denne oppgaven vil vi se hvordan du bruker Firebase Realtime-databasetjenesten.

Sette opp en sanntidsdatabase i Firebase

I navigasjonslinjen til venstre, inne i Utvikle-delen, klikker du på Sanntidsdatabase. En «Opprett database»-knapp vises til høyre. Klikk på den for å opprette din første database i Firebase.

Deretter må du velge mellom flere geografiske plasseringsalternativer for din nye database. Velg den som er nærmest brukerne dine. Dette er et viktig aspekt for å minimere ventetiden til API-en din, spesielt i sanntidsapper.

Det neste trinnet er å konfigurere de grunnleggende sikkerhetsreglene for databasen din. Du kan velge låst modus og deretter tildele tilgangstillatelser etter behov, eller velge testmodus, som muliggjør all lesing og skriving.

Du kan starte med testmodusalternativet for ikke å komplisere sikkerhetsinnstillingene i begynnelsen. Du kan alltid opprette regler senere for å angi sikkerhetskonfigurasjonen med større detaljer.

Så snart du er ferdig med å konfigurere databasen, aktiveres den tilsvarende API-en også i den personlige konsollens APIer og tjenester-seksjon i Google Cloud Platform.

Programmering av Firebase API

På dette tidspunktet har du allerede de grunnleggende elementene i prosjektet ditt konfigurert i Firebase-konsollen. Det neste trinnet er å skrive API-koden din. For å gjøre det, må du initialisere Firebase-verten og funksjonene på din lokale datamaskin. Du kan installere firebase-verktøy ved å bruke npm:

npm install -g firebase-tools

Deretter kan du logge på firebase og initialisere prosjektet med følgende kommandoer:

firebase login firebase init

En velkomstskjerm vil vises der Firebase informerer deg om mappen der prosjektet ditt vil bli initialisert, og en meny med alternativer vises.

I den menyen velger du Funksjoner og hosting (vertsalternativet lar deg ha en egendefinert URL for APIen du skal utvikle). Velg deretter Firebase-appen du opprettet tidligere fra listen, og deretter må du velge språket du vil bruke. For å utvikle et web-API kan du velge JavaScript.

Hvis du vil bruke pakkeavhengigheter, installer dem med npm inne i funksjonsmappen. Deretter kan du begynne å skrive koden for funksjonene dine. Husk å inkludere firebase-funksjonene og firebase-admin-pakkene, sammen med eventuelle andre pakker du trenger:

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

For å bruke sanntidsdatabasen må du spesifisere URL-adressen når du initialiserer JavaScript-SDK-en. URL-adressen er plassert i Realtime Database-delen av Firebase-konsollen. Du kan gjenkjenne den på formatet:

https://<database-name>.<region>.firebasedatabase.app

Du kan bruke følgende kodebit for å initialisere SDK-en din, og erstatte dataene som tilsvarer prosjektets konfigurasjonsobjekt:

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

Når du har skrevet koden til API-funksjonen din, er det på tide å distribuere. Men før du gjør det, må du gjøre noen endringer i firebase.json, og legge til følgende linjer, modifisert i henhold til prosjektkonfigurasjonen:

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

Neste trinn er distribusjon. Første gang du må gjøre en fullstendig distribusjon, utføre kommandoen:

firebase deploy

I påfølgende distribusjoner vil du kun kunne distribuere funksjonene ved å bruke parameteren –only functions.

  Slik kansellerer du Adobe Acrobat-abonnement

Etter å ha utført deploy-kommandoen, viser Firebase CLI URL-en til HTTP-endepunktene til funksjonene dine i terminalen, som du kan bruke til å starte API-ene dine fra en nettapplikasjon. URL-en inneholder prosjekt-ID-en din og en region for HTTP-funksjonen. For eksempel kan følgende URL brukes til å kalle en varespørringsfunksjon ved å sende den itemid=1 som en parameter:

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

For å utføre funksjonen, åpne URL-en med de tilsvarende parameterne i en nettleser.

Vær oppmerksom på at distribusjon til produksjonsmiljøet krever et abonnement på Firebase Blaze-planen, som er betal etter hvert, som du kan lese på Firebase-prissiden. Det er en etterfaktureringstjeneste, som betyr at du blir fakturert for bruken din i slutten av hver måned.

Hvis du ikke har et Blaze-abonnement, vil ikke distribusjonskommandoen vise API-URLen din. I stedet vil du se en melding som informerer deg om at du må abonnere på Blaze-planen hvis du vil distribuere til kjøretidsmiljøet. I dette tilfellet kan du fortsatt bruke Firebase Local Emulation Suite til å bygge og teste applikasjoner på din lokale maskin i stedet for å distribuere dem til Firebase-produksjonsmiljøet. Lokal testing er nyttig for å unngå unødvendige kostnader under applikasjonsutvikling, siden hver testkjøring kan generere kostnader på kontoen din.

Lokal testing og prototyping

Verktøyet Local Emulator Suite tilbyr et integrert brukergrensesnitt som gjør prototyping enkelt og nyttig for å teste appene dine på din lokale maskin.

Med Emulator Suite-brukergrensesnittet kan du blant annet teste databasedesignene dine, Cloud Functions-arbeidsflytene, analysere backend-tjenesters ytelse og evaluere endringer i sikkerhetsregler. Det er i utgangspunktet en sikker sandkasse for å teste API-funksjonaliteten din før du sender den til et produksjonsmiljø.

For å emulere funksjonene dine eller teste programmet lokalt, kjør firebase emulators:start. Du må ha Java installert for å kunne bruke Firestore Emulator. Hvis du ikke har det, kan du installere det fra her.

  Reparer Amazon Kindle som ikke vises på PC

Når du starter Firestore Emulator, vil kommandoen returnere en URL som lar deg åpne Emulator Suite-brukergrensesnittet i nettleseren din. Som standard vil denne URLen være localhost:4000, men den kan variere på hver maskin.

Du vil også få en fullstendig URL for HTTP-funksjonen din. Denne nettadressen vil ligne på:

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

bare det vil ha navnet på prosjektet ditt, navnet på funksjonen din, og det kan også ha et annet portnummer på din lokale maskin.

For å teste funksjonen, kopier URL-en som returneres av emulatoren, legg til eventuelle nødvendige parametere (f.eks. ?itemid=1) og skriv den inn i en ny fane i nettleseren din. Resultatene av API-kjøringen vil vises i Emulator Suite-grensesnittet.

I Logger-fanen vil du se nye logger som indikerer at itemQuery()-funksjonen ble utført. Hvis funksjonen din genererer nye data i Firestore-databasen, vil du se det i Firestore-fanen.

Få mer eksponering for API-en din

Hvis du vil at API-ene du utvikler skal bli populære, kan Firebase hjelpe deg med det også. Ikke bare fordi det lar deg bygge applikasjonen din raskere, og tar mye av arbeidet med å få backend-tjenester i gang, men også ved å hjelpe deg med produktposisjoneringen. Hvordan er det mulig? Rett og slett fordi apper knyttet til Firebase rangerer bedre i søkerangeringer enn andre apper.

Ta også hensyn til Firebases appindekserings-API. Dette verktøyet forbedrer søkerangeringen til applenker og hjelper brukere med å finne ønsket innhold. Den plasserer også Installer-knappen etter appens startsideknapp, slik at interesserte brukere bare er et klikk unna å bli brukere av appen din.

Avslutningsvis tilbyr Firebase deg ikke bare backend-tjenester som dramatisk øker hastigheten på utviklingen av API-en din, men når den først er oppe og går og eksponert for verden, hjelper den deg også med å markedsføre den – og tjene penger på den.

x