Exercices â N08 API REST & Bonnes Pratiques
10 exercices pour maßtriser les standards REST : status codes, pagination, validation et réponses uniformes.
Status codes corrects â 201 pour POST
Créez un routeur Express avec une route POST / qui crée un item et répond avec
res.status(201). Le status 201 signale qu'une ressource a été créée avec succÚs.
Utilisez res.status(201).json(...).
RĂ©ponse JSON standardisĂ©e â { success, data }
CrĂ©ez une API Express oĂč chaque rĂ©ponse respecte le format
{ success: true, data: ... } pour les succĂšs
et { success: false, error: '...' } pour les erreurs.
Utilisez res.json().
Validation body â Champs requis avec 400
Créez une route POST /books qui vérifie que title,
author et genre sont présents dans req.body.
Retournez 400 avec un tableau d'erreurs si des champs sont manquants.
Utilisez return res.status(400).json(...) pour stopper l'exécution.
Validation email avec regex
Créez une route POST /api/users qui valide le format de l'email avec une
regex (ex: /^[^\s@]+@[^\s@]+\.[^\s@]+$/).
Retournez 400 si l'email est absent ou mal formé.
Utilisez .test(email) ou email.match(regex).
Pagination avec req.query
Ajoutez de la pagination Ă une route GET /books.
Lisez ?page= et ?limit= depuis req.query,
puis utilisez .slice() pour retourner uniquement les éléments de la page courante.
Retournez aussi { total, page, limit, totalPages }.
Tri et filtrage avec req.query
Créez une route GET /books qui supporte le filtrage par
?genre= et le tri avec ?sort= et ?order=asc|desc.
Lisez tous les paramĂštres depuis req.query.
Utilisez .sort() sur le tableau.
Gestion 404 â Ressource introuvable
Créez des routes GET /:id et PUT /:id qui retournent
res.status(404).json(...) quand la ressource n'existe pas.
Utilisez array.find() ou array.findIndex() pour vérifier l'existence.
Status 422 â Unprocessable Entity
Créez une route POST /api/products qui distingue
400 (champ requis manquant) et
422 (valeur sĂ©mantiquement invalide â ex: prix nĂ©gatif, stock dĂ©cimal).
Utilisez res.status(422).json(...) pour les erreurs logiques.
Middleware de validation réutilisable
Créez une fonction validate(schema) qui retourne un middleware
(req, res, next). Si la validation échoue, retournez 400.
Sinon appelez next(). Exportez la fonction avec module.exports.
API CRUD complÚte et standardisée
Créez une API CRUD complÚte avec 5 routes (GET liste, GET :id, POST, PUT :id, DELETE :id).
Respectez les standards : { success, data }, status 201 pour POST,
204 pour DELETE, 404 si introuvable, pagination sur la liste (?page=&?limit=).
Code > 300 caractĂšres.