Une API en 15 minutes avec MongoDB, Mongoose et Node.js

Afin de conclure la série d’articles sur les API, je vous propose ici d’aborder un élément essentiel dans leur développement : le système de gestion de base de données (SGBD). Pour ce faire, nous allons reprendre le développement réalisé précédemment dans l’article intitulé : Développez votre propre API avec Node.js et Express, dans lequel je vous avais proposé un exemple d’API répertoriant les piscines de la métropole lilloise. Je vous invite donc à vous y référer car nous allons ici finaliser cette API en proposant un SGBD NoSQL : MongoDB.

MongoDB, un SGBD NoSQL

MongoDB est un système de gestion de base de données NoSQL (orienté document) en opposition avec les SGBD relationnels SQL traditionnels. Je ne m’attarderai pas sur la distinction entre les SGBD SQL et NoSQL, de nombreuses ressources sont disponibles à ce sujet. Retenez juste qu’à la différence des systèmes SQL qui reposent sur des tables relationnelles, MongoDB repose sur des collections de documents au format JSON (clé/valeur).

Pour nous plonger sans plus attendre dans l’application qui nous intéresse, vous trouverez ci-dessous l’exemple d’une collection contenant deux documents. Chaque document représente une piscine.

 

Afin de faciliter l’accès et les différentes opérations liées à la base MongoDB, nous allons utiliser un framework nommé Mongoose. Pour installer ce framework, rien de plus simple, il suffit d’entrer la commande (dans votre console) depuis le dossier restfrugal* :

*A ce stade, vous devriez avoir en héritage de l’article précédent, un dossier nommé restfrugal dans lequel se trouve le fichier apifrugal.js, contenant la logique de notre API.

Par souci de simplicité, nous utiliserons dans cet article une base MongoDB hébergée gratuitement, dans la limite de 500MB, chez mLab. Ce qui est largement suffisant dans notre cas et cela nous évite d’installer MongoDB sur notre poste. Si vous souhaitez tout de même l’installer sur votre poste, de nombreuses ressources sont disponibles sur le web.

Inscrivez-vous sur le site et créer une nouvelle base (choisir create new, ensuite cliquer sur single node et choisir Sandbox : FREE). Enfin, nommez la base ; nous la nommerons restfrugaldb (tout en minuscule) dans notre cas. Voilà, notre base de données à été créée. Dernière petite chose avant de pouvoir y accéder, nous devons créer un utilisateur. C’est dans la rubrique Users que cela se passe. Cliquez alors sur Add database user et entrez les informations demandées. Vous pouvez utiliser celle que j’ai créée pour ce tutoriel (userfrugal:passwordfrugal). Une fois cela fait, nous pourrons accéder à notre base de données via le lien suivant :

Utilisation de Mongoose dans notre API

 Reprenons le fichier apifrugal.js contenant la logique de notre API. Nous allons y ajouter quelques lignes de codes pour indiquer que nous allons utiliser le framework mongoose et inscrire l’adresse de notre base de données. Ensuite nous établissons la connexion avec la base.

Maintenant que nous nous sommes connectés à la base, nous allons implémenter chacune des méthodes (GET, POST, PUT, DELETE) de notre API. Avant cela, nous devons définir un schéma pour nos données. En effet, mongoose utilise des schémas pour modéliser les données.

Nous allons ensuite utiliser ce schéma dans chacune des méthodes de notre API. Commençons par le plus simple : la méthode GET. Il s’agit dans ce cas d’interroger la base et de renvoyer à l’utilisateur la liste de toutes les piscines.

Si aucune piscine n’est inscrite en base (ce qui devrait être le cas avec une base fraichement créée), la méthode GET devrait renvoyer un tableau vide. Voyons maintenant comment ajouter des piscines à notre base de données. Nous allons tenir compte de notre schéma Piscine pour fournir les informations attendues par la base. Nous avions vu dans l’article précédent comment récupérer les données envoyées par la méthode POST, c’est exactement ce que nous allons faire ici.

Vous pouvez maintenant ajouter des piscines avec l’application Postman comme illustré ci-dessous :

Vous avez compris le principe. Pour le reste des méthodes, en particulier pour la méthode PUT, les opérations se feront sur une piscine que nous aurons identifiée par son identifiant dans l’URI. Encore une fois, je vous invite à vous référer à l’article sur le sujet, si tout cela n’est pas très clair. Ci-dessous les méthodes GET, PUT et DELETE pour une piscine identifiée.

Voilà ! Nous avons une API fonctionnelle. Bien entendu, nous avons simplifié beaucoup de choses dans le développement de cette API, mais c’est déjà un très bon début pour se lancer dans un prototype de service. Si des choses vous ont échappées ou si vous souhaitez approfondir certains points, n’hésitez pas à nous laisser un commentaire. Je vous laisse ci-dessous l’intégralité du fichier apifrugal.js :

Si le sujet de l’innovation citoyenne vous intéresse et que vous souhaitez contribuer à améliorer les services de votre ville par le biais de ce genre de développement, sachez que nous sommes actifs au sein d’une association qui œuvre dans ce sens : le Citizen Clan.  Et que vous êtes bien entendu les bienvenus. Ce sujet fait d’ailleurs l’objet d’un projet en cours.

Comme d’habitude, si des erreurs se sont glissées dans l’article, n’hésitez pas à nous en faire part.

Pour être informé des prochains articles, rendez-vous sur Twitter.

Merci, et à très bientôt sur Frugal Prototype

 

Frugal Newsletter

Apprenez les rudiments du prototypage frugal !
Votre adresse email
Partagez cet article !
Share on LinkedInTweet about this on TwitterShare on FacebookShare on Google+
Ali Benfattoum

Ali Benfattoum

Serial Prototypeur, Citizen Clan Activist, Intrapreneur... Ali le reste du temps. Ma devise : c'est sur le terrain qu'on fait ses preuves... de concept. Suivez moi sur @alifrugal

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.