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

Photo of author

By pierre



Découverte de Firebase : Une Plateforme Tout-en-Un pour le Développement d’Applications

Lancée en 2012 et acquise par Google deux ans plus tard, Firebase a évolué d’une simple base de données temps réel à une solution complète pour le développement d’applications. Initialement conçue comme un outil de gestion de données en direct, son potentiel a rapidement séduit Google qui y a intégré une multitude de services complémentaires.

Firebase se présente aujourd’hui comme un système BaaS (Backend as a Service) riche de 18 services. Il simplifie considérablement la création d’applications web et mobiles. De grandes entreprises telles qu’Accenture, Alibaba Travels, Stack, Twitch et Instacart, ainsi que plus de 2 300 autres, font confiance à ses capacités.

Les Atouts Majeurs de Firebase

Parmi l’ensemble des services proposés par Firebase, sa base de données en temps réel reste un des piliers fondamentaux et un atout majeur. Hébergées dans le cloud, ces bases de données stockent les informations au format JSON et assurent une synchronisation en direct avec chaque client connecté. Que ce soit via 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 unique et toujours à jour.

Cloud Firestore est un autre service Firebase qui mérite une attention particulière. Il s’agit d’une base de données de documents NoSQL, idéale pour faciliter le stockage, la synchronisation et l’interrogation de données pour des applications mobiles et web à l’échelle globale. Sa capacité à structurer les données en hiérarchies et à effectuer des requêtes complexes est un atout majeur. La performance des requêtes est basée sur la taille des résultats, et non sur la quantité de données, assurant ainsi une scalabilité optimale dès le début du développement.

Outre les services de bases de données, Firebase propose également des solutions d’hébergement, de stockage de fichiers et des fonctions (comparables à AWS Lambda), pour ne citer que celles-là.

Création d’une API avec Firebase

Les API (Interfaces de Programmation Applicative) permettent de mettre à disposition des services utilisables par d’autres applications, qu’elles soient développées en interne ou par des tiers. Firebase vous offre la possibilité de créer des services personnalisés, tirant parti des fonctionnalités de Firebase sans la complexité de configuration d’un backend dédié. Par exemple, vous pourriez partager l’accès à une base de données en temps réel Firebase pour permettre à des applications externes de consulter des données provenant de capteurs industriels.

Pour commencer la création d’une API, accédez à la Console Firebase. Ajoutez un nouveau projet en cliquant sur « Ajouter un projet » et attribuez-lui un nom. Google vous proposera d’activer Google Analytics pour votre nouveau projet. Nous vous recommandons d’accepter, car vous bénéficierez d’avantages comme les tests A/B et des rapports statistiques détaillés pour votre API.

Une fois le projet créé, vous pourrez sélectionner les services Firebase que votre API utilisera. Afin d’illustrer le processus, nous allons nous concentrer sur l’utilisation de la base de données Firebase Realtime.

Configuration d’une Base de Données Temps Réel dans Firebase

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

Vous devrez ensuite choisir une zone géographique pour héberger votre base de données. Préférez celle qui est la plus proche de vos utilisateurs, afin de réduire la latence de votre API, particulièrement dans le cas d’applications en temps réel.

L’étape suivante consiste à définir les règles de sécurité de base pour votre base de données. Vous pouvez opter pour le mode verrouillé, et accorder les autorisations d’accès selon vos besoins, ou sélectionner le mode test, autorisant toutes les lectures et écritures.

Pour simplifier la configuration au démarrage, vous pouvez choisir l’option du mode test, en gardant la possibilité de définir des règles de sécurité plus précises par la suite.

Dès que votre base de données est configurée, l’API correspondante est automatiquement activée dans la section « API et services » de votre console Google Cloud Platform.

Programmation de l’API Firebase

Maintenant que les éléments essentiels sont configurés dans la console Firebase, il est temps de passer à la programmation de votre API. Pour ce faire, il faut initialiser l’hébergement et les fonctions Firebase sur votre ordinateur local. L’installation de firebase-tools peut être réalisée à l’aide de npm :

npm install -g firebase-tools

Ensuite, connectez-vous à firebase et initiez votre projet en utilisant les commandes suivantes :

firebase login firebase init

Un écran de bienvenue s’affichera, vous informant du dossier où votre projet sera initialisé, ainsi qu’un menu d’options.

Dans ce menu, sélectionnez « Fonctions » et « Hébergement ». L’option « Hébergement » vous permettra d’obtenir une URL personnalisée pour l’API que vous allez développer. Ensuite, choisissez dans la liste l’application Firebase que vous avez créée précédemment, puis choisissez le langage de programmation. Pour une API web, vous pouvez choisir JavaScript.

Si vous utilisez des dépendances de packages, installez-les avec npm dans le dossier « functions ». Vous pouvez désormais commencer à écrire le code de vos fonctions. N’oubliez pas d’inclure les packages firebase-functions et firebase-admin, ainsi que tous les autres nécessaires :

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

Pour interagir avec la base de données en temps réel, il est impératif de spécifier son URL lors de l’initialisation de votre SDK JavaScript. L’URL est disponible dans la section « Base de données en temps réel » de la console Firebase. Vous la reconnaîtrez par son format :

https://<nom-de-la-base-de-données>.<région>.firebasedatabase.app

Vous pouvez utiliser l’extrait de code suivant pour initialiser votre SDK, en remplaçant les données par celles 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 le code de votre fonction API prêt, le moment est venu de la déployer. Avant cela, quelques ajustements sont nécessaires dans le fichier firebase.json, en ajoutant les lignes suivantes, que vous adapterez à la configuration de votre projet :

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

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

firebase deploy

Lors des déploiements suivants, il sera possible de ne déployer que les fonctions, en utilisant le paramètre –only functions.

Après avoir exécuté la commande de déploiement, l’interface en ligne de commande (CLI) de Firebase affichera l’URL des points de terminaison HTTP de vos fonctions dans le terminal. Vous pourrez utiliser ces URL pour appeler votre API depuis une application web. L’URL inclut l’identifiant de votre projet et la région de la fonction HTTP. Par exemple, l’URL suivante peut servir à appeler une fonction de requête d’élément en passant itemid=1 comme paramètre :

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

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

Il est important de noter que le déploiement en environnement de production requiert un abonnement au plan Firebase Blaze, qui est payant, comme le précise la page de tarification de Firebase. Il s’agit d’un service à facturation post-payée, ce qui signifie que vous êtes facturé à la fin de chaque mois, en fonction de votre utilisation.

Si vous n’avez pas d’abonnement Blaze, la commande de déploiement n’affichera pas l’URL de votre API. À la place, un message vous informera de la nécessité de souscrire au plan Blaze pour effectuer le déploiement. Dans ce cas, vous pouvez toujours recourir à la suite d’émulation locale Firebase pour créer et tester vos applications sur votre ordinateur, plutôt que de les déployer dans l’environnement de production Firebase. Les tests locaux sont un moyen efficace de contrôler les coûts de développement, car chaque test en production peut générer des frais sur votre compte.

Tests Locaux et Prototypage

La suite d’émulation locale (Local Emulator Suite) met à votre disposition une interface utilisateur intégrée, facilitant le prototypage et les tests de vos applications sur votre machine.

Avec l’interface utilisateur de l’Emulator Suite, vous pouvez tester vos conceptions de bases de données, les flux de travail de vos fonctions cloud, évaluer les performances des services backend, et valider les modifications apportées aux règles de sécurité, parmi d’autres tâches. Il s’agit d’un environnement sécurisé pour valider les fonctionnalités de votre API avant de la déployer en production.

Pour émuler vos fonctions ou tester votre application en local, exécutez la commande firebase emulators:start. Vous devez avoir installé Java pour utiliser l’émulateur Firestore. Si ce n’est pas le cas, vous pouvez le télécharger depuis ici.

Lorsque vous lancez l’émulateur Firestore, la commande renverra une URL qui vous permettra d’accéder à l’interface utilisateur de l’Emulator Suite dans votre navigateur. Par défaut, cette URL sera localhost:4000, mais elle peut varier selon votre configuration.

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

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

Cependant, elle contiendra le nom de votre projet, le nom de votre fonction, et peut utiliser un numéro de port différent sur votre machine locale.

Pour tester la fonction, copiez l’URL fournie par l’émulateur, ajoutez les paramètres requis (par exemple ?itemid=1) et collez-la dans un nouvel onglet de votre navigateur. Les résultats de l’exécution de l’API s’afficheront dans l’interface utilisateur de l’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, elles seront visibles dans l’onglet « Firestore ».

Accroître la Visibilité de Votre API

Si vous souhaitez que les API que vous développez gagnent en popularité, Firebase peut aussi vous accompagner. Non seulement il accélère le développement de votre application en éliminant une grande partie des tâches liées à la mise en place et au fonctionnement des services backend, mais il vous aide également à mieux positionner votre produit. Comment ? Simplement, les applications associées à Firebase ont tendance à mieux se classer dans les résultats de recherche que les autres.

L’API d’indexation d’applications de Firebase est également un atout à considérer. Cet outil améliore le classement des liens d’application dans les résultats de recherche, facilitant ainsi l’accès des utilisateurs au contenu qu’ils cherchent. Il place aussi le bouton « Installer » directement après le bouton de la page d’accueil de votre application, permettant aux utilisateurs intéressés de devenir utilisateurs de votre application en un simple clic.

En conclusion, Firebase fournit non seulement des services backend qui accélèrent considérablement le développement de votre API, mais une fois celle-ci opérationnelle et accessible au public, Firebase vous aide à la promouvoir et à la monétiser.