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 considéré uniquement 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 qui utilisent 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 service proposé par Firebase a été sa base de données en temps réel, qui reste l'un de ses plus grands attraits. Les bases de données en temps réel de Firebase sont hébergées dans le nuage, stockent les données au format JSON et se synchronisent en temps réel avec chaque client qui y est connecté. Que vous utilisiez 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 documentaire 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 des données connexes et de requêtes expressives pour extraire des données permet d'exploiter pleinement le potentiel de Cloud Firestore. De leur côté, les requêtes s'adaptent en fonction de la taille des résultats plutôt que de la taille de l'ensemble des données. Cela permet aux applications d'évoluer dès le début sans attendre le moment où les besoins dépassent la capacité
Outre les services de base de données susmentionnés, Firebase propose également des services d'hébergement, de stockage de fichiers, de fonctions(de type AWS Lambda), parmi bien d'autres choses
Création d'une API
Les API sont un moyen de fournir des services que vos propres applications ou des applications tierces 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 un accès à une base de données en temps réel Firebase pour que des applications tierces puissent interroger les informations collectées par des capteurs industriels
La première étape de la création d'une API dans Firebase consiste à accéder à la console Firebase et à ajouter un projet en cliquant sur "Ajouter un projet" et en donnant un nom au nouveau projet. Google vous proposera d'activer Google Analytics pour votre nouveau projet. Il est recommandé d'accepter cette recommandation, car vous obtiendrez des avantages tels que les tests A/B et une grande variété de rapports statistiques à partir 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 en temps réel de Firebase
Mise en place d'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ît à 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 celle qui est la plus proche de vos utilisateurs. C'est 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 en fonction des besoins, ou opter pour le mode test, qui autorise toutes les lectures et écritures
Vous pouvez commencer par l'option du mode test pour ne pas compliquer les paramètres de sécurité au début. Vous pourrez 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 le code de votre API. Pour ce faire, vous devez 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 de bienvenue s'affiche dans lequel Firebase vous informe du dossier dans lequel votre projet sera initialisé, et un menu d'options apparaît
Dans ce menu, sélectionnez Functions et Hosting (l'option Hosting 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, puis sélectionnez la langue à utiliser. Pour développer une API web, vous pouvez opter pour JavaScript
Si vous utilisez des dépendances, installez-les avec npm dans le dossier functions. Vous pouvez ensuite commencer à écrire le code de vos fonctions. N'oubliez pas d'inclure les paquets firebase-functions et firebase-admin, ainsi que tous les autres paquets 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 Realtime Database de la console Firebase. Vous pouvez la reconnaître à son format
https://<nom de la base de données>.<région>.firebasedatabase.app
Vous pouvez utiliser l'extrait suivant pour initialiser votre SDK, en remplaçant les données correspondant à 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 la déployer. Mais avant cela, vous devrez faire quelques changements dans firebase.json, en ajoutant les lignes suivantes, modifiées en fonction de 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, vous pourrez déployer uniquement les fonctions, en utilisant le paramètre -only functions
Après avoir exécuté la commande deploy, le CLI Firebase affiche l'URL des terminaux HTTP de vos fonctions dans le terminal, que vous pouvez utiliser pour invoquer 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 comme paramètre
h
ttps://
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 payé à l'utilisation, comme vous pouvez le lire sur la page de tarification de Firebase. Il s'agit d'un service de 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 deploy n'affichera pas votre URL API. Au lieu de cela, vous verrez un message vous informant que vous devez souscrire 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 machine locale au lieu de les déployer dans l'environnement de production Firebase. Les tests locaux sont utiles pour éviter des coûts inutiles pendant le développement de l'application, car chaque test peut générer des frais sur votre compte
Test local 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 machine locale
Avec l'interface utilisateur de la suite Emulator, vous pouvez tester vos conceptions de base de données, vos flux de travail de fonctions cloud, analyser les performances des services dorsaux et évaluer les changements dans les 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 d'ici
Lorsque vous invoquez Firestore Emulator, la commande renvoie une URL qui vous permet d'ouvrir l'interface utilisateur d'Emulator Suite dans votre navigateur. Par défaut, cette URL sera localhost:4000, mais elle peut varier d'une machine à l'autre
Vous obtiendrez également une URL complète pour votre fonction HTTP. Cette URL ressemblera à
h
ttp://l
ocalhost:5001/apiproject-8753c/us-central1/itemQuery
sauf qu'elle contiendra le nom de votre projet, le nom de votre fonction et 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 entrez-la dans un nouvel onglet de votre navigateur. Les résultats de l'exécution de l'API apparaîtront dans l'interface utilisateur de l'Emulator Suite
Dans l'onglet Logs, vous verrez de nouveaux logs 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 le verrez dans l'onglet Firestore
Mieux connaître votre API
Si vous souhaitez que les API que vous développez deviennent populaires, Firebase peut également vous y aider. Non seulement parce qu'elle vous permet de créer votre application plus rapidement, en vous déchargeant d'une grande partie du travail lié à la mise en place et au fonctionnement des services dorsaux, mais aussi parce qu'elle vous aide à positionner votre produit. Comment cela est-il possible ? Tout simplement parce que les applications associées à Firebase sont mieux classées dans les moteurs de recherche que les autres applications
Tenez également compte de l'API d'indexation des applications de Firebase. Cet outil améliore le classement des liens vers les applications 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, de sorte que les utilisateurs intéressés ne sont 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, il vous aide également à la promouvoir - et à gagner de l'argent grâce à elle.