Hur man framgångsrikt bygger ett API med Firebase?

Firebase är en applikationsutvecklingsplattform som lanserades 2012 och förvärvades av Google två år senare. I början var Firebase tänkt som en databas för realtidsapplikationer, men Google såg dess potential och bestämde sig för att lägga till ytterligare tjänster till den.

För närvarande är Firebase ett BaaS-system (backend as a service) med 18 tjänster för att underlätta skapandet av webb- och mobilapplikationer. Bland företagen som använder Firebases BaaS-tjänster finns Accenture, Alibaba Travels, Stack, Twitch och Instacart, tillsammans med mer än 2 300 andra.

Fördelar med att använda Firebase

Den första av de tjänster som Firebase erbjöd var dess realtidsdatabas, och den är fortfarande ett av dess största drag. Firebase Realtidsdatabaser lagras i molnet och lagrar data i JSON-format och synkroniseras i realtid med varje klient som är ansluten till dem. Oavsett om du använder iOS SDK, Android SDK eller JavaScript SDK, delar alla appar som är anslutna till en Firebase Realtime-databas en instans av databasen, alltid uppdaterad med den senaste informationen.

Cloud Firestore är en annan intressant Firebase-tjänst. Det är en NoSQL-dokumentdatabas utformad för att underlätta datalagring, synkronisering och sökning för mobil- och webbappar på global skala. Skapandet av hierarkier för att lagra relaterad data och uttrycksfulla frågor för att hämta data gör att Cloud Firestores fulla potential kan realiseras. I sin tur skalas frågor baserat på storleken på resultaten snarare än datauppsättningens storlek. Detta gör att applikationer kan skalas från början utan att vänta till det ögonblick då behoven överstiger kapaciteten.

Utöver de ovan nämnda databastjänsterna erbjuder Firebase även hostingtjänster, fillagring, funktioner (AWS Lambda-stil) bland mycket annat.

Skapa ett API

API:er är ett sätt att tillhandahålla tjänster för dina egna eller tredjepartsappar att använda. Firebase låter dig tillhandahålla anpassade tjänster som i sin tur använder Firebases egna tjänster utan att behöva sätta upp en backend för dessa tjänster. Du kan till exempel erbjuda tillgång till en Firebase realtidsdatabas för tredjepartsapplikationer för att söka information som samlas in av industriella sensorer.

Det första steget för att skapa ett API i Firebase är att komma åt Firebase-konsol och lägg till ett projekt genom att klicka på ”Lägg till projekt” och ge det nya projektet ett namn. Google ger dig möjlighet att aktivera Google Analytics för ditt nya projekt. Det rekommenderas att acceptera denna rekommendation, eftersom du kommer att få fördelar som A/B-testning och en mängd olika statistiska rapporter från ditt API.

När du har skapat ditt projekt kommer du att kunna välja vilka Firebase-tjänster som ditt API kommer att använda. För att illustrera denna uppgift kommer vi att se hur man använder Firebase Realtime-databastjänsten.

Konfigurera en realtidsdatabas i Firebase

I navigeringsfältet till vänster, i avsnittet Utveckla, klicka på Realtime Database. En ”Skapa databas”-knapp visas till höger. Klicka på den för att skapa din första databas i Firebase.

Därefter måste du välja mellan flera geografiska platsalternativ för din nya databas. Välj den som är närmast dina användare. Detta är en viktig aspekt för att minimera latensen för ditt API, särskilt i realtidsappar.

Nästa steg är att konfigurera de grundläggande säkerhetsreglerna för din databas. Du kan välja låst läge och sedan tilldela åtkomstbehörigheter efter behov, eller välja testläge, som möjliggör all läsning och skrivning.

Du kan börja med alternativet testläge för att inte komplicera säkerhetsinställningarna i början. Du kan alltid skapa regler senare för att ställa in säkerhetskonfigurationen med större granularitet.

Så snart du är klar med att konfigurera din databas, aktiveras motsvarande API även i din personliga konsols API:er och tjänster i Google Cloud Platform.

Programmering av Firebase API

Vid det här laget har du redan de grundläggande delarna av ditt projekt konfigurerade i Firebase-konsolen. Nästa steg är att skriva din API-kod. För att göra det måste du initiera Firebase-värden och funktionerna på din lokala dator. Du kan installera firebase-verktyg med npm:

npm install -g firebase-tools

Sedan kan du logga in i firebase och initiera ditt projekt med följande kommandon:

firebase login firebase init

En välkomstskärm kommer att visas där Firebase informerar dig om i vilken mapp ditt projekt kommer att initieras, och en meny med alternativ kommer att visas.

I den menyn väljer du Funktioner och värd (alternativet Hosting låter dig ha en anpassad URL för API:et du ska utveckla). Välj sedan från listan Firebase-appen du skapade tidigare, varefter du måste välja vilket språk du vill använda. För att utveckla ett webb-API kan du välja JavaScript.

Om du kommer att använda paketberoenden, installera dem med npm inuti mappen funktioner. Sedan kan du börja skriva koden för dina funktioner. Kom ihåg att inkludera paketen firebase-functions och firebase-admin, tillsammans med alla andra paket du behöver:

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

För att använda realtidsdatabasen måste du ange dess URL när du initierar din JavaScript-SDK. URL:en finns i avsnittet Realtime Database på Firebase-konsolen. Du kan känna igen den på dess format:

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

Du kan använda följande kodavsnitt för att initiera din SDK och ersätta data som motsvarar ditt projekts konfigurationsobjekt:

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 skrivit koden för din API-funktion är det dags att distribuera. Men innan du gör det måste du göra några ändringar i firebase.json, lägga till följande rader, modifierade enligt din projektkonfiguration:

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

Nästa steg är implementering. Första gången du måste göra en fullständig distribution, exekvera kommandot:

firebase deploy

I efterföljande distributioner kommer du att kunna distribuera endast funktionerna med hjälp av parametern –only functions.

Efter att ha kört kommandot deploy visar Firebase CLI URL:en till HTTP-slutpunkterna för dina funktioner i terminalen, som du kan använda för att anropa dina API:er från en webbapplikation. URL:en innehåller ditt projekt-ID och en region för HTTP-funktionen. Till exempel kan följande URL användas för att anropa en artikelfrågefunktion genom att skicka den itemid=1 som en parameter:

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

För att utföra funktionen, öppna URL:en med motsvarande parametrar i en webbläsare.

Observera att distribution till produktionsmiljön kräver en prenumeration på Firebase Blaze-planen, som är pay-as-you-go, som du kan läsa på Firebase-prissidan. Det är en efterfaktureringstjänst, vilket innebär att du faktureras för din användning i slutet av varje månad.

Om du inte har en Blaze-prenumeration kommer kommandot deploy inte att visa din API-URL. Istället kommer du att se ett meddelande som informerar dig om att du måste prenumerera på Blaze-planen om du vill distribuera till runtime-miljön. I det här fallet kan du fortfarande använda Firebase Local Emulation Suite för att bygga och testa applikationer på din lokala dator istället för att distribuera dem till Firebase produktionsmiljö. Lokala tester är användbara för att undvika onödiga kostnader under applikationsutveckling, eftersom varje testkörning kan generera avgifter på ditt konto.

Lokala tester och prototyper

Verktyget Local Emulator Suite erbjuder ett integrerat användargränssnitt som gör prototyper enkelt och användbart för att testa dina appar på din lokala dator.

Med Emulator Suite-användargränssnittet kan du testa din databasdesign, dina Cloud Functions-arbetsflöden, analysera backend-tjänsters prestanda och utvärdera ändringar i säkerhetsregler, bland andra uppgifter. Det är i grunden en säker sandlåda för att testa din API-funktionalitet innan du skickar den till en produktionsmiljö.

För att emulera dina funktioner eller testa din applikation lokalt, kör firebase emulators:start. Du måste ha Java installerat för att kunna använda Firestore Emulator. Om du inte har det kan du installera det från här.

När du anropar Firestore Emulator kommer kommandot att returnera en URL som gör att du kan öppna Emulator Suite-användargränssnittet i din webbläsare. Som standard kommer denna URL att vara localhost:4000, men den kan variera på varje maskin.

Du kommer också att få en fullständig URL för din HTTP-funktion. Den här webbadressen kommer att se ut som:

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

bara det kommer att ha namnet på ditt projekt, namnet på din funktion, och det kan också ha ett annat portnummer på din lokala dator.

För att testa funktionen, kopiera URL:en som returneras av emulatorn, lägg till eventuella nödvändiga parametrar (t.ex. ?itemid=1) och skriv in den i en ny flik i din webbläsare. Resultaten av API-körningen kommer att visas i Emulator Suite UI.

På fliken Loggar ser du nya loggar som indikerar att funktionen itemQuery() kördes. Om din funktion genererar ny data i din Firestore-databas kommer du att se den på Firestore-fliken.

Få mer exponering för ditt API

Om du vill att API:erna du utvecklar ska bli populära kan Firebase hjälpa dig med det också. Inte bara för att det låter dig bygga din applikation snabbare, vilket tar mycket av arbetet med att få igång backend-tjänster, utan också genom att hjälpa dig med din produktpositionering. Hur är det mojligt? Helt enkelt för att appar associerade med Firebase rankas bättre i sökrankningar än andra applikationer.

Ta även hänsyn till Firebases appindexerings-API. Det här verktyget förbättrar sökrankningen för applänkar och hjälper användare att hitta det önskade innehållet. Den placerar också knappen Installera efter knappen för din app startsida så att intresserade användare bara är ett klick från att bli användare av din app.

Sammanfattningsvis erbjuder Firebase dig inte bara backend-tjänster som dramatiskt påskyndar utvecklingen av ditt API, utan när det väl är igång och exponerat för världen hjälper det dig också att marknadsföra det – och tjäna pengar på det.