Introduction : l'API REST, c'est simple
L'API REST (Representational State Transfer) est le "langage" que différents programmes utilisent pour communiquer sur Internet. Si vous souhaitez que votre application web fournisse des données à une autre application (par exemple, un client mobile ou un frontend React), vous avez besoin d'une API. Et aujourd'hui, nous allons en écrire une en JavaScript (Node.js) à partir de zéro en seulement 30 minutes.
Nous utiliserons la bibliothèque la plus populaire — Express. Elle est simple, flexible et idéale pour les débutants. À la fin de cet article, vous aurez un serveur fonctionnel avec quatre opérations CRUD principales (création, lecture, mise à jour, suppression). C'est parti !
Étape 1 : Préparation de l'environnement et installation d'Express
Avant d'écrire du code, assurez-vous d'avoir Node.js installé. Vous pouvez le vérifier dans le terminal :
node -vnpm -vSi les versions s'affichent — tout est prêt. Sinon, téléchargez Node.js depuis le site officiel.
Créez maintenant un dossier pour le projet et initialisez-le :
mkdir my-first-apicd my-first-apinpm init -yLe fichier package.json est créé. Installons Express et la bibliothèque pour travailler avec UUID (pour générer des identifiants uniques) :
npm install express uuidPrêt. Créez un fichier index.js — ce sera le fichier principal de notre serveur.
Étape 2 : Création d'un serveur simple avec Express
Ouvrez index.js et écrivez la première version du serveur :
const express = require('express');const app = express();const PORT = 3000;
// Analyse du JSON depuis le corps de la requêteapp.use(express.json());
// Route de testapp.get('/', (req, res) => { res.send('Bonjour le monde ! L\'API REST fonctionne !');});
// Démarrage du serveurapp.listen(PORT, () => { console.log(`Serveur démarré sur http://localhost:${PORT}`);});Lancez le serveur avec la commande :
node index.jsOuvrez le navigateur et allez à l'adresse http://localhost:3000. Si vous voyez le message de bienvenue — tout fonctionne !
Analysons le code : express.json() est un middleware qui convertit automatiquement le JSON de la requête en objet JavaScript. Cela est nécessaire pour les requêtes POST et PUT.
Étape 3 : Ajout de données et routes CRUD
Voici la partie la plus intéressante — créons un tableau de données (dans un projet réel, vous utiliseriez une base de données, mais pour l'apprentissage, un tableau convient). Ce sera une liste de livres.
const { v4: uuidv4 } = require('uuid');
// Simulation de base de donnéeslet books = [];
// Créer un livre (POST)app.post('/api/books', (req, res) => { const { title, author } = req.body; if (!title || !author) { return res.status(400).json({ error: 'Vous devez spécifier title et author' }); } const newBook = { id: uuidv4(), title, author }; books.push(newBook); res.status(201).json(newBook);});
// Obtenir tous les livres (GET)app.get('/api/books', (req, res) => { res.json(books);});
// Obtenir un livre par ID (GET)app.get('/api/books/:id', (req, res) => { const book = books.find(b => b.id === req.params.id); if (!book) { return res.status(404).json({ error: 'Livre non trouvé' }); } res.json(book);});
// Mettre à jour un livre (PUT)app.put('/api/books/:id', (req, res) => { const book = books.find(b => b.id === req.params.id); if (!book) { return res.status(404).json({ error: 'Livre non trouvé' }); } const { title, author } = req.body; if (title) book.title = title; if (author) book.author = author; res.json(book);});
// Supprimer un livre (DELETE)app.delete('/api/books/:id', (req, res) => { const index = books.findIndex(b => b.id === req.params.id); if (index === -1) { return res.status(404).json({ error: 'Livre non trouvé' }); } books.splice(index, 1); res.status(204