Comment réussir à créer une API avec Firebase ?

Firebase est une plateforme de développement d’applications lancée en 2012 et rachetée par Google deux ans plus tard. À ses débuts, Firebase était simplement pensé comme une base de données pour les applications en temps réel, mais Google a vu son potentiel et a décidé d’y ajouter des services supplémentaires.

Actuellement, Firebase est un système BaaS (backend as a service) avec 18 services pour faciliter la création d’applications web et mobiles. Parmi les entreprises utilisant les services BaaS de Firebase figurent Accenture, Alibaba Travels, Stack, Twitch et Instacart, ainsi que plus de 2 300 autres.

Avantages de l’utilisation de Firebase

Le premier des services offerts par Firebase était sa base de données en temps réel, et il reste l’un de ses plus gros attraits. Les bases de données en temps réel Firebase sont hébergées dans le cloud, stockant les données au format JSON et se synchronisant en temps réel avec chaque client qui leur est connecté. Qu’elles utilisent le SDK iOS, le SDK Android ou le SDK JavaScript, toutes les applications connectées à une base de données Firebase Realtime partagent une instance de la base de données, toujours mise à jour avec les dernières données.

Cloud Firestore est un autre service Firebase intéressant. Il s’agit d’une base de données de documents NoSQL conçue pour faciliter le stockage, la synchronisation et l’interrogation des données pour les applications mobiles et Web à l’échelle mondiale. La création de hiérarchies pour stocker les données associées et les requêtes expressives pour récupérer les données permettent de réaliser tout le potentiel de Cloud Firestore. À leur tour, les requêtes évoluent en fonction de la taille des résultats plutôt que de la taille de l’ensemble de données. Cela permet aux applications d’évoluer dès le début sans attendre le moment où les besoins dépassent la capacité.

En plus des services de base de données susmentionnés, Firebase propose également des services d’hébergement, de stockage de fichiers, des fonctions (de style AWS Lambda), entre autres.

Création d’une API

Les API sont un moyen de fournir des services que vos propres applications ou celles de tiers peuvent utiliser. Firebase vous permet de fournir des services personnalisés qui, à leur tour, utilisent les propres services de Firebase sans avoir à configurer un backend pour ces services. Vous pouvez, par exemple, offrir l’accès à une base de données en temps réel Firebase à des applications tierces pour interroger les informations collectées par les capteurs industriels.

La première étape de la création d’une API dans Firebase consiste à accéder au Console Firebase et ajoutez un projet en cliquant sur « Ajouter un projet » et en donnant un nom au nouveau projet. Google vous donnera la possibilité d’activer Google Analytics pour votre nouveau projet. Il est recommandé d’accepter cette recommandation, car vous bénéficierez d’avantages tels que les tests A/B et une grande variété de rapports statistiques de votre API.

Une fois votre projet créé, vous pourrez sélectionner les services Firebase que votre API utilisera. Pour illustrer cette tâche, nous allons voir comment utiliser le service de base de données Firebase Realtime.

Configurer une base de données en temps réel dans Firebase

Dans la barre de navigation à gauche, dans la section Développer, cliquez sur Base de données en temps réel. Un bouton « Créer une base de données » apparaîtra sur la droite. Cliquez dessus pour créer votre première base de données dans Firebase.

Ensuite, vous devrez choisir entre plusieurs options de localisation géographique pour votre nouvelle base de données. Sélectionnez celui qui est le plus proche de vos utilisateurs. Il s’agit d’un aspect important pour minimiser la latence de votre API, en particulier dans les applications en temps réel.

L’étape suivante consiste à configurer les règles de sécurité de base pour votre base de données. Vous pouvez opter pour le mode verrouillé, puis attribuer des autorisations d’accès selon vos besoins, ou opter pour le mode test, qui permet toutes les lectures et écritures.

Vous pouvez commencer avec l’option du mode test pour ne pas compliquer les paramètres de sécurité au début. Vous pouvez toujours créer des règles ultérieurement pour définir la configuration de sécurité avec une plus grande granularité.

Dès que vous avez fini de configurer votre base de données, l’API correspondante est également activée dans la section API et services de votre console personnelle dans Google Cloud Platform.

Programmation de l’API Firebase

À ce stade, vous avez déjà configuré les éléments de base de votre projet dans la console Firebase. L’étape suivante consiste à écrire votre code API. Pour ce faire, vous devrez initialiser l’hébergement et les fonctions de Firebase sur votre ordinateur local. Vous pouvez installer firebase-tools en utilisant npm :

npm install -g firebase-tools

Ensuite, vous pouvez vous connecter à firebase et initialiser votre projet avec les commandes suivantes :

firebase login firebase init

Un écran d’accueil s’affichera dans lequel Firebase vous informe du dossier dans lequel votre projet sera initialisé, et un menu d’options apparaîtra.

Dans ce menu, sélectionnez Fonctions et hébergement (l’option Hébergement vous permettra d’avoir une URL personnalisée pour l’API que vous développerez). Choisissez ensuite dans la liste l’application Firebase que vous avez créée précédemment, après quoi vous devez sélectionner la langue à utiliser. Pour développer une API web, vous pouvez opter pour JavaScript.

Si vous utilisez des dépendances de package, installez-les avec npm dans le dossier functions. Ensuite, vous pouvez commencer à écrire le code de vos fonctions. N’oubliez pas d’inclure les packages firebase-functions et firebase-admin, ainsi que tout autre package dont vous avez besoin :

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

Pour utiliser la base de données en temps réel, vous devez spécifier son URL lors de l’initialisation de votre SDK JavaScript. L’URL se trouve dans la section Base de données en temps réel de la console Firebase. Vous pouvez le reconnaître par son format :

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

Vous pouvez utiliser l’extrait de code suivant pour initialiser votre SDK, en remplaçant les données qui correspondent à l’objet de configuration de votre projet :

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

Une fois que vous avez écrit le code de votre fonction API, il est temps de déployer. Mais avant cela, vous devrez faire quelques changements dans firebase.json, en ajoutant les lignes suivantes, modifiées selon la configuration de votre projet :

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

La prochaine étape est le déploiement. La première fois, vous devez effectuer un déploiement complet en exécutant la commande :

firebase deploy

Dans les déploiements suivants, vous pourrez déployer uniquement les fonctions, à l’aide du paramètre –only functions.

Après avoir exécuté la commande de déploiement, la CLI Firebase affiche l’URL des points de terminaison HTTP de vos fonctions dans le terminal, que vous pouvez utiliser pour appeler vos API à partir d’une application Web. L’URL contient votre ID de projet et une région pour la fonction HTTP. Par exemple, l’URL suivante peut être utilisée pour appeler une fonction de requête d’élément en lui passant itemid=1 en tant que paramètre :

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

Pour exécuter la fonction, ouvrez l’URL avec les paramètres correspondants dans un navigateur.

Notez que le déploiement dans l’environnement de production nécessite un abonnement au plan Firebase Blaze, qui est payant, comme vous pouvez le lire sur la page de tarification Firebase. Il s’agit d’un service post-facturation, ce qui signifie que vous êtes facturé pour votre utilisation à la fin de chaque mois.

Si vous n’avez pas d’abonnement Blaze, la commande de déploiement n’affichera pas l’URL de votre API. Au lieu de cela, vous verrez un message vous informant que vous devez vous abonner au plan Blaze si vous souhaitez déployer dans l’environnement d’exécution. Dans ce cas, vous pouvez toujours utiliser Firebase Local Emulation Suite pour créer et tester des applications sur votre ordinateur local au lieu de les déployer dans l’environnement de production Firebase. Les tests locaux sont utiles pour éviter des coûts inutiles lors du développement de l’application, car chaque test peut générer des frais sur votre compte.

Tests locaux et prototypage

L’outil Local Emulator Suite offre une interface utilisateur intégrée qui rend le prototypage facile et utile pour tester vos applications sur votre ordinateur local.

Avec l’interface utilisateur d’Emulator Suite, vous pouvez tester vos conceptions de base de données, vos flux de travail Cloud Functions, analyser les performances des services backend et évaluer les modifications des règles de sécurité, entre autres tâches. Il s’agit essentiellement d’un bac à sable sécurisé pour tester la fonctionnalité de votre API avant de l’envoyer dans un environnement de production.

Pour émuler vos fonctions ou tester votre application localement, exécutez firebase emulators:start. Vous devez avoir installé Java pour pouvoir utiliser Firestore Emulator. Si vous ne l’avez pas, vous pouvez l’installer à partir de ici.

Lorsque vous appelez Firestore Emulator, la commande renverra une URL qui vous permettra d’ouvrir l’interface utilisateur Emulator Suite dans votre navigateur. Par défaut, cette URL sera localhost:4000, mais elle peut varier sur chaque machine.

Vous obtiendrez également une URL complète pour votre fonction HTTP. Cette URL ressemblera à :

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

seulement il aura le nom de votre projet, le nom de votre fonction, et il pourrait aussi avoir un numéro de port différent sur votre machine locale.

Pour tester la fonction, copiez l’URL renvoyée par l’émulateur en ajoutant les paramètres nécessaires (par exemple ?itemid=1) et saisissez-la dans un nouvel onglet de votre navigateur. Les résultats de l’exécution de l’API apparaîtront dans l’interface utilisateur d’Emulator Suite.

Dans l’onglet Journaux, vous verrez de nouveaux journaux indiquant que la fonction itemQuery() a été exécutée. Si votre fonction génère de nouvelles données dans votre base de données Firestore, vous les verrez dans l’onglet Firestore.

Obtenir plus d’exposition pour votre API

Si vous souhaitez que les API que vous développez deviennent populaires, Firebase peut également vous aider. Non seulement parce qu’il vous permet de créer votre application plus rapidement, en éliminant une grande partie du travail de mise en place et de fonctionnement des services backend, mais aussi en vous aidant à positionner votre produit. Comment est-ce possible? Tout simplement parce que les applications associées à Firebase se classent mieux dans les classements de recherche que les autres applications.

Tenez également compte de l’API d’indexation des applications de Firebase. Cet outil améliore le classement de recherche des liens d’application et aide les utilisateurs à trouver le contenu souhaité. Il place également le bouton Installer après le bouton de la page d’accueil de votre application afin que les utilisateurs intéressés ne soient qu’à un clic de devenir des utilisateurs de votre application.

En conclusion, Firebase vous offre non seulement des services backend qui accélèrent considérablement le développement de votre API, mais une fois qu’elle est opérationnelle et exposée au monde, elle vous aide également à la promouvoir et à en tirer des revenus.