Wie erstellt man erfolgreich eine API mit Firebase?

Firebase: Eine Plattform für die App-Entwicklung und API-Erstellung

Firebase ist eine umfassende Entwicklungsplattform für Anwendungen, die ihren Ursprung im Jahr 2012 hat und zwei Jahre später von Google übernommen wurde. Anfänglich war Firebase primär als Datenbanklösung für Echtzeitanwendungen konzipiert. Google erkannte jedoch das weitreichende Potenzial und erweiterte die Plattform um zahlreiche zusätzliche Dienste.

Aktuell fungiert Firebase als ein Backend-as-a-Service (BaaS)-System mit einer Auswahl von 18 unterschiedlichen Diensten, die darauf abzielen, die Entwicklung von Web- und Mobilanwendungen zu vereinfachen. Eine Vielzahl von Unternehmen, darunter Accenture, Alibaba Travels, Stack, Twitch und Instacart, setzen auf die BaaS-Dienste von Firebase, neben mehr als 2.300 weiteren Nutzern.

Die Vorteile von Firebase im Überblick

Der ursprüngliche Service von Firebase war die Echtzeitdatenbank, die nach wie vor eine der Hauptattraktionen der Plattform darstellt. Diese Datenbanken werden in der Cloud gehostet, speichern Daten im JSON-Format und synchronisieren diese in Echtzeit mit allen verbundenen Clients. Egal ob iOS SDK, Android SDK oder JavaScript SDK verwendet wird, alle Anwendungen, die mit einer Firebase-Echtzeitdatenbank verbunden sind, nutzen eine gemeinsame Instanz der Datenbank, die stets über die neuesten Daten verfügt.

Cloud Firestore stellt einen weiteren bedeutenden Firebase-Service dar. Es handelt sich um eine NoSQL-Dokumentendatenbank, die die Speicherung, Synchronisierung und Abfrage von Daten für mobile und Web-Apps auf globaler Ebene erleichtert. Durch die Erstellung von Hierarchien zur Speicherung zusammengehöriger Daten und den Einsatz leistungsstarker Abfragen zum Datenabruf kann das volle Potential von Cloud Firestore ausgeschöpft werden. Die Abfragen skalieren dabei abhängig von der Größe der Ergebnisse und nicht der Datenmenge selbst. Dadurch können Anwendungen von Anfang an skaliert werden, ohne auf eine Kapazitätsüberschreitung warten zu müssen.

Neben den bereits genannten Datenbankdiensten bietet Firebase unter anderem auch Hosting-Dienste, Dateispeicher und serverlose Funktionen (ähnlich AWS Lambda).

Die Erstellung einer API mit Firebase

APIs ermöglichen das Bereitstellen von Diensten für eigene oder Drittanbieter-Anwendungen. Mit Firebase können Sie maßgeschneiderte Dienste entwickeln, die die Dienste von Firebase nutzen, ohne dass Sie ein eigenes Backend einrichten müssen. Beispielsweise können Sie Drittanbietern den Zugriff auf eine Firebase-Echtzeitdatenbank ermöglichen, um Informationen abzurufen, die von industriellen Sensoren gesammelt werden.

Der erste Schritt zur Erstellung einer API in Firebase ist der Zugriff auf die Firebase-Konsole. Dort fügen Sie ein neues Projekt hinzu, indem Sie auf „Projekt hinzufügen“ klicken und dem neuen Projekt einen Namen geben. Google bietet Ihnen die Option, Google Analytics für Ihr neues Projekt zu aktivieren, was empfohlen wird, da Sie so Vorteile wie A/B-Tests und umfangreiche statistische Auswertungen erhalten.

Nachdem Ihr Projekt erstellt ist, können Sie die Firebase-Dienste auswählen, die Ihre API verwenden soll. Um diesen Prozess zu verdeutlichen, betrachten wir die Verwendung des Firebase-Echtzeitdatenbankdienstes.

Einrichten einer Echtzeitdatenbank in Firebase

In der Navigationsleiste auf der linken Seite finden Sie den Abschnitt „Entwickeln“ und dort die Option „Echtzeitdatenbank“. Klicken Sie darauf. Auf der rechten Seite sehen Sie dann den Button „Datenbank erstellen“. Klicken Sie darauf, um Ihre erste Datenbank in Firebase zu erstellen.

Als nächstes wählen Sie einen geografischen Standort für Ihre neue Datenbank aus den angebotenen Optionen. Wählen Sie die Option, die Ihren Benutzern am nächsten liegt, um die Latenz Ihrer API, insbesondere bei Echtzeit-Anwendungen, zu minimieren.

Im nächsten Schritt konfigurieren Sie die grundlegenden Sicherheitsregeln für Ihre Datenbank. Sie können zwischen einem eingeschränkten Modus, bei dem Sie Zugriffsrechte individuell vergeben müssen, oder einem Testmodus wählen, der alle Lese- und Schreibvorgänge ermöglicht.

Sie können mit dem Testmodus beginnen, um die Sicherheitseinstellungen zu Beginn nicht unnötig zu verkomplizieren. Sie können die Sicherheitskonfiguration später jederzeit granulärer festlegen.

Sobald die Konfiguration Ihrer Datenbank abgeschlossen ist, wird die zugehörige API auch im Bereich „APIs & Dienste“ Ihrer persönlichen Konsole in der Google Cloud Platform aktiviert.

Programmierung der Firebase-API

Zu diesem Zeitpunkt haben Sie die grundlegenden Elemente Ihres Projekts in der Firebase-Konsole konfiguriert. Der nächste Schritt ist das Schreiben des API-Codes. Dazu müssen Sie das Firebase-Hosting und die Funktionen auf Ihrem lokalen Computer initialisieren. Sie können die Firebase-Tools mit npm installieren:

npm install -g firebase-tools

Anschließend können Sie sich bei Firebase anmelden und Ihr Projekt mit den folgenden Befehlen initialisieren:

firebase login firebase init

Ein Begrüßungsbildschirm wird eingeblendet, in dem Firebase Sie über den Ordner informiert, in dem Ihr Projekt initialisiert wird, und ein Menü mit Auswahlmöglichkeiten anzeigt.

In diesem Menü wählen Sie Funktionen und Hosting aus (die Hosting-Option erlaubt Ihnen eine benutzerdefinierte URL für die zu entwickelnde API). Wählen Sie dann die zuvor erstellte Firebase-App aus der Liste. Im Anschluss wählen Sie die Programmiersprache aus. Für eine Web-API ist JavaScript eine geeignete Wahl.

Falls Sie Paketabhängigkeiten nutzen, installieren Sie diese mit npm im Ordner „functions“. Danach können Sie mit dem Schreiben des Codes für Ihre Funktionen beginnen. Vergessen Sie nicht, die Pakete `firebase-functions` und `firebase-admin` zusammen mit allen anderen benötigten Paketen einzubinden:

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

Um die Echtzeitdatenbank zu verwenden, müssen Sie deren URL beim Initialisieren Ihres JavaScript-SDK angeben. Sie finden die URL im Abschnitt „Echtzeitdatenbank“ der Firebase-Konsole. Sie erkennen sie an ihrem Format:

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

Sie können den folgenden Codeabschnitt verwenden, um Ihr SDK zu initialisieren und die Daten durch die Ihres Projektes zu ersetzen:

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

Nachdem Sie den Code Ihrer API-Funktion geschrieben haben, ist es Zeit für die Bereitstellung. Davor müssen Sie aber noch einige Änderungen in der `firebase.json` Datei vornehmen, indem Sie die folgenden Zeilen hinzufügen (angepasst an Ihre Projektkonfiguration):

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

Der nächste Schritt ist die Bereitstellung. Bei der ersten Bereitstellung müssen Sie eine vollständige Bereitstellung mit folgendem Befehl durchführen:

firebase deploy

Bei späteren Bereitstellungen können Sie nur die Funktionen bereitstellen, indem Sie den Parameter `–only functions` verwenden.

Nach der Ausführung des Bereitstellungsbefehls zeigt die Firebase-CLI die URL der HTTP-Endpunkte Ihrer Funktionen im Terminal an. Diese können Sie dann verwenden, um Ihre APIs von einer Webanwendung aufzurufen. Die URL enthält Ihre Projekt-ID und eine Region für die HTTP-Funktion. Zum Beispiel kann die folgende URL verwendet werden, um eine Funktion zum Abrufen von Artikeln aufzurufen, indem ihr `itemid=1` als Parameter übergeben wird:

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

Um die Funktion auszuführen, öffnen Sie die URL mit den entsprechenden Parametern in einem Browser.

Beachten Sie, dass für die Bereitstellung in einer Produktionsumgebung ein Abonnement des Firebase Blaze-Plans erforderlich ist, das auf nutzungsbasierten Kosten basiert. Informationen zu den Preisen können Sie auf der Firebase-Preisübersichtsseite finden. Es handelt sich um einen Post-Billing-Service, bei dem die Nutzung am Ende jedes Monats abgerechnet wird.

Wenn Sie kein Blaze-Abonnement haben, wird die API-URL vom Bereitstellungsbefehl nicht angezeigt. Stattdessen wird eine Meldung eingeblendet, die Sie darüber informiert, dass Sie den Blaze-Plan abonnieren müssen, wenn Sie in der Laufzeitumgebung bereitstellen möchten. In diesem Fall können Sie weiterhin die Firebase Local Emulation Suite verwenden, um Anwendungen auf Ihrem lokalen Computer zu erstellen und zu testen, anstatt sie in der Firebase-Produktionsumgebung bereitzustellen. Lokale Tests sind hilfreich, um unnötige Kosten während der Anwendungsentwicklung zu vermeiden, da jeder Testlauf Gebühren für Ihr Konto verursachen kann.

Lokales Testen und Prototyping

Das Local Emulator Suite Tool bietet eine integrierte Benutzeroberfläche, die das Prototyping vereinfacht und nützlich macht, um Ihre Apps auf Ihrem lokalen Computer zu testen.

Die Emulator Suite ermöglicht Ihnen unter anderem das Testen Ihres Datenbankdesigns, Ihrer Cloud Functions Workflows, das Analysieren der Leistung von Back-End-Diensten und das Evaluieren von Änderungen an Sicherheitsregeln. Es ist im Wesentlichen eine sichere Sandbox zum Testen Ihrer API-Funktionalität, bevor Sie sie in eine Produktionsumgebung übernehmen.

Um Ihre Funktionen zu emulieren oder Ihre Anwendung lokal zu testen, führen Sie `firebase emulators:start` aus. Sie benötigen eine installierte Version von Java, um den Firestore-Emulator nutzen zu können. Falls dies nicht der Fall ist, können Sie sie von hier installieren.

Nach dem Aufruf des Firestore-Emulators gibt der Befehl eine URL zurück, die Sie in Ihrem Browser öffnen können, um auf die Emulator Suite zuzugreifen. Standardmäßig lautet diese URL `localhost:4000`, kann jedoch je nach Computer unterschiedlich sein.

Sie erhalten auch eine vollständige URL für Ihre HTTP-Funktion. Diese URL sieht ähnlich aus wie:

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

Allerdings wird sie den Namen Ihres Projekts, den Namen Ihrer Funktion und möglicherweise auch eine andere Portnummer auf Ihrem lokalen Computer enthalten.

Zum Testen der Funktion kopieren Sie die vom Emulator zurückgegebene URL, fügen gegebenenfalls Parameter hinzu (z. B. `?itemid=1`) und fügen sie in einen neuen Tab Ihres Browsers ein. Die Ergebnisse der API-Ausführung werden in der Benutzeroberfläche der Emulator Suite angezeigt.

Auf der Registerkarte „Protokolle“ können Sie neue Einträge sehen, die darauf hinweisen, dass die Funktion `itemQuery()` ausgeführt wurde. Wenn Ihre Funktion neue Daten in Ihrer Firestore-Datenbank erstellt, werden diese auf der Registerkarte „Firestore“ angezeigt.

Mehr Aufmerksamkeit für Ihre API gewinnen

Wenn Sie Ihre entwickelten APIs populär machen möchten, kann Firebase Sie auch dabei unterstützen. Nicht nur, weil es Ihnen ermöglicht, Ihre Anwendungen schneller zu entwickeln und den Aufwand bei der Einrichtung und Wartung von Backend-Diensten erheblich reduziert, sondern auch, weil es Ihnen bei der Produktpositionierung helfen kann. Wie das möglich ist? Ganz einfach, da mit Firebase verbundene Apps in Suchmaschinen besser abschneiden als andere Anwendungen.

Berücksichtigen Sie auch die App-Indexierungs-API von Firebase. Dieses Tool verbessert die Suchmaschinenplatzierung von App-Links und hilft Benutzern, die gewünschten Inhalte zu finden. Darüber hinaus wird die „Installieren“-Schaltfläche nach der „Startseite“-Schaltfläche Ihrer App platziert, so dass interessierte Benutzer nur einen Klick davon entfernt sind, Nutzer Ihrer App zu werden.

Zusammenfassend lässt sich sagen, dass Firebase Ihnen nicht nur Backend-Dienste bereitstellt, die die Entwicklung Ihrer API dramatisch beschleunigen, sondern Ihnen auch hilft, diese zu bewerben und damit Einnahmen zu erzielen, sobald sie betriebsbereit und der Welt zugänglich ist.