Concevez une API REST propre avec les bonnes méthodes HTTP, les bons codes de statut et une validation du corps des requêtes.
Ouvrir cette leçon dans KodokonUne API REST expose des ressources (utilisateurs, tâches, commandes) manipulées avec les méthodes HTTP : GET pour lire, POST pour créer, PUT ou PATCH pour modifier, DELETE pour supprimer. La convention professionnelle : des noms au pluriel, jamais de verbes dans les URL. On écrit POST /tasks, pas /createTask. Construisons une petite API de tâches, en mémoire pour l'instant.
import express from "express";
const app = express();
app.use(express.json());
const tasks = [
{ id: 1, title: "Relire le module", done: false }
];
app.get("/tasks", (req, res) => {
res.json(tasks);
});
app.listen(3000);La ligne app.use(express.json()) est indispensable : sans elle, req.body vaut undefined pour toute requête JSON. À la création, validez systématiquement l'entrée, répondez 201 et renvoyez la ressource créée : le client récupère ainsi l'id généré par le serveur.
app.post("/tasks", (req, res) => {
const { title } = req.body;
if (!title) {
return res.status(400).json({
error: "Le champ title est requis"
});
}
const task = {
id: tasks.length + 1,
title,
done: false
};
tasks.push(task);
res.status(201).json(task);
});Retenez les codes que vous utiliserez tous les jours : 200 lecture ou mise à jour réussie, 201 ressource créée, 204 succès sans contenu (suppression), 400 requête invalide, 404 ressource introuvable, 500 erreur du serveur. La règle : en 4xx, le client s'est trompé ; en 5xx, c'est votre code qui a échoué.
app.delete("/tasks/:id", (req, res) => {
const id = Number(req.params.id);
const index = tasks.findIndex((t) => t.id === id);
if (index === -1) {
return res.status(404).json({
error: "Tâche introuvable"
});
}
tasks.splice(index, 1);
res.status(204).end();
});req.body reste-t-il undefined pour une requête JSON ?app.use(express.json())app.use(express.static(...))app.listen(3000)title. Quelle est la bonne réaction de l'API ?