Formate un nombre pour l'affichage
Apprenez à créer une API RESTful avec ExpressJS dans ce tutoriel pas à pas pour débutants complets. Exemples simples et exécutables inclus
Dans ce tutoriel, nous allons apprendre à créer une API RESTful avec ExpressJS. Ce guide est conçu pour les débutants : nous irons doucement, étape par étape, avec des explications très simples et un exemple que vous pourrez tester. Vous créerez une API pour gérer une liste de tâches (ajouter, lire, modifier, supprimer).
Une API RESTful est comme un serveur qui répond à des demandes simples pour manipuler des données (par exemple, une liste de tâches). "REST" signifie qu’on utilise des commandes standard comme GET (lire), POST (ajouter), PUT (modifier), et DELETE (supprimer). Avec ExpressJS, c’est facile à faire, et ça peut être utilisé par des applications web ou mobiles. Nous allons créer une API pour gérer des tâches, comme "Faire les courses".
Avant de coder, préparons tout ce qu’il faut. Si vous avez suivi les tutoriels précédents, vous avez déjà Node.js et ExpressJS. Voici les étapes :
node -v
. Si une version apparaît (ex. : v16.13.0), c’est bon. Sinon, téléchargez Node.js sur nodejs.org.cd chemin/vers/api-restful-express
, puis tapez npm init -y
. Cela crée un fichier package.json
.npm install express
. Express est tout ce dont nous avons besoin pour cet exemple simple.Commençons par une API qui gère une liste de tâches stockée en mémoire (pas dans une base de données pour simplifier).
Créez un fichier nommé index.js
dans votre dossier "api-restful-express" et ajoutez ce code. Il permet de lire, ajouter, modifier, et supprimer des tâches.
var express = require('express'); var app = express(); // Liste temporaire pour stocker les tâches var taches = [ { id: 1, titre: "Faire les courses" }, { id: 2, titre: "Apprendre ExpressJS" } ]; // Activer la lecture des données JSON et formulaires app.use(express.json()); app.use(express.urlencoded({ extended: false })); // GET : Lire toutes les tâches app.get('/taches', function(req, res) { res.json(taches); }); // GET : Lire une tâche spécifique par ID app.get('/taches/:id', function(req, res) { var tache = taches.find(t => t.id === parseInt(req.params.id)); if (tache) { res.json(tache); } else { res.status(404).json({ message: "Tâche non trouvée" }); } }); // POST : Ajouter une nouvelle tâche app.post('/taches', function(req, res) { var nouvelleTache = { id: taches.length + 1, titre: req.body.titre }; taches.push(nouvelleTache); res.status(201).json(nouvelleTache); }); // PUT : Modifier une tâche existante app.put('/taches/:id', function(req, res) { var tache = taches.find(t => t.id === parseInt(req.params.id)); if (tache) { tache.titre = req.body.titre; res.json(tache); } else { res.status(404).json({ message: "Tâche non trouvée" }); } }); // DELETE : Supprimer une tâche app.delete('/taches/:id', function(req, res) { var index = taches.findIndex(t => t.id === parseInt(req.params.id)); if (index !== -1) { taches.splice(index, 1); res.status(204).send(); } else { res.status(404).json({ message: "Tâche non trouvée" }); } }); app.listen(3000, function() { console.log("Serveur démarré sur http://localhost:3000/taches"); });
Voici chaque ligne expliquée très simplement pour les débutants :
id
et un titre
). C’est comme une mini-base de données temporaire.res.json
envoie les données dans un format que les applications comprennent.parseInt
transforme le texte de l’URL en nombre.Pour tester cette API, vous pouvez utiliser un outil comme Postman ou votre terminal avec curl
. Voici comment :
index.js
, tapez node index.js
dans le terminal.curl http://localhost:3000/taches
. Vous verrez la liste initiale.curl http://localhost:3000/taches/1
. Vous verrez la tâche avec l’ID 1.curl -X POST -H "Content-Type: application/json" -d '{"titre":"Nettoyer"}' http://localhost:3000/taches
. Une nouvelle tâche est ajoutée.curl -X PUT -H "Content-Type: application/json" -d '{"titre":"Nettoyer la maison"}' http://localhost:3000/taches/3
. La tâche est mise à jour.curl -X DELETE http://localhost:3000/taches/2
. La tâche est supprimée.Pour tester dans un navigateur : Visitez http://localhost:3000/taches pour voir la liste. Pour les autres actions (POST, PUT, DELETE), utilisez Postman ou curl
, car le navigateur seul ne peut pas les faire facilement.
Dans l’étape précédente, nous avons utilisé des commandes comme curl http://localhost:3000/taches
ou curl -X POST -H "Content-Type: application/json" -d '{"titre":"Nettoyer"}' http://localhost:3000/taches
pour tester notre API. Mais à quoi servent ces mots et symboles ? Dans cette section, nous allons tout expliquer simplement, étape par étape, pour que même un débutant complet comprenne comment ça marche et pourquoi on les utilise.
Voici les deux commandes que nous avons utilisées, suivies d’une explication détaillée de chaque partie :
curl http://localhost:3000/taches
Cette commande simple demande à l’API de nous montrer toutes les tâches.
Ce que ça fait : Quand vous tapez cette commande, curl envoie une demande GET (lire) à l’API, et le serveur répond avec la liste des tâches en JSON, que vous verrez dans le terminal.
curl -X POST -H "Content-Type: application/json" -d '{"titre":"Nettoyer"}' http://localhost:3000/taches
Cette commande plus longue ajoute une nouvelle tâche à l’API. Décomposons chaque partie :
{"clé": "valeur"}
.{"titre":"Nettoyer"}
est la nouvelle tâche.
Ce que ça fait : Cette commande dit à l’API : "Ajoute une tâche avec le titre ’Nettoyer’". Le serveur répond avec la nouvelle tâche créée, que vous verrez dans le terminal.
Votre navigateur (comme Chrome) peut faire des demandes GET facilement en visitant une URL comme http://localhost:3000/taches, et vous verrez la réponse dans la fenêtre du navigateur. Mais pour les actions comme POST (ajouter), PUT (modifier), ou DELETE (supprimer), le navigateur ne suffit pas, car il ne peut pas envoyer des données ou changer la méthode tout seul. C’est pourquoi on utilise curl
dans le terminal : il envoie ces demandes directement au serveur, et la réponse s’affiche dans le terminal, pas dans le navigateur. Il n’y a pas de redirection vers le navigateur — tout se passe dans le terminal ! Curl est rapide et parfait pour tester une API sans interface graphique.
Pour essayer vous-même :
node index.js
est lancé dans un terminal.curl http://localhost:3000/taches
et appuyez sur Entrée. Vous verrez la liste des tâches dans le terminal.curl -X POST -H "Content-Type: application/json" -d '{"titre":"Nettoyer"}' http://localhost:3000/taches
. Vous verrez la nouvelle tâche ajoutée dans le terminal.curl http://localhost:3000/taches
pour voir la liste mise à jour dans le terminal.Si vous faites une erreur (ex. : oubli d’un guillemet), le terminal affichera un message. Relisez la commande et réessayez !
Dans l’étape précédente, nous avons utilisé des commandes simples comme curl http://localhost:3000/taches
pour lire les tâches et curl -X POST -H "Content-Type: application/json" -d '{"titre":"Nettoyer"}' http://localhost:3000/taches
pour en ajouter une. Mais saviez-vous que curl
peut faire beaucoup plus ? Dans cette section, nous allons découvrir d’autres commandes et options utiles pour tester votre API RESTful. Tout sera expliqué simplement, comme si vous n’aviez jamais utilisé curl auparavant !
Une API RESTful utilise quatre actions principales : GET (lire), POST (ajouter), PUT (modifier), et DELETE (supprimer). Nous avons vu GET et POST, voici comment faire PUT et DELETE avec curl
:
Commande : curl -X PUT -H "Content-Type: application/json" -d '{"titre":"Nettoyer la maison"}' http://localhost:3000/taches/1
-X PUT
: Dit à curl d’utiliser PUT pour modifier une ressource.-d '{"titre":"Nettoyer la maison"}'
: Les nouvelles données à appliquer.Commande : curl -X DELETE http://localhost:3000/taches/2
-X DELETE
: Dit à curl de supprimer la ressource.-d
ici, car on ne modifie rien, on supprime juste.En plus des méthodes, curl
a des options (des "drapeaux") qui changent son comportement. Voici quelques-unes qui peuvent vous aider :
-v
Commande : curl -v http://localhost:3000/taches
< HTTP/1.1 200 OK
(le serveur dit "tout va bien").-i
Commande : curl -i http://localhost:3000/taches
Content-Type: application/json
suivi des données.-o
Commande : curl -o taches.txt http://localhost:3000/taches
-H
Commande : curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer monjeton" -d '{"titre":"Nettoyer"}' http://localhost:3000/taches
Vous pouvez mélanger ces options pour faire des tests plus avancés :
curl -v -o taches.txt http://localhost:3000/taches
Affiche les détails dans le terminal et enregistre la réponse dans "taches.txt".
curl -v -X PUT -H "Content-Type: application/json" -d '{"titre":"Réviser Express"}' http://localhost:3000/taches/1
Met à jour la tâche et montre les détails de la requête.
curl
a des dizaines d’options ! Pour les découvrir :
curl --help
dans le terminal pour un résumé rapide.curl --manual
pour un guide complet (attention, c’est très long !).Pour essayer :
node index.js
tourne.curl -X DELETE http://localhost:3000/taches/1
pour supprimer la tâche 1.curl -v http://localhost:3000/taches
pour voir plus d’infos.curl http://localhost:3000/taches
pour voir les changements.Ces commandes fonctionnent avec l’API que nous avons créée. Amusez-vous à les tester pour voir ce qu’elles font !
Félicitations ! Vous savez maintenant créer une API RESTful avec ExpressJS pour gérer des tâches. Vous avez appris à utiliser GET, POST, PUT, et DELETE pour lire, ajouter, modifier, et supprimer des données. Pour aller plus loin, explorez notre prochain tutoriel sur Scaffolding avec ExpressJS ou consultez la documentation ExpressJS.