Exercices — N08 API REST & Bonnes Pratiques

10 exercices pour maßtriser les standards REST : status codes, pagination, validation et réponses uniformes.

EX1

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(...).

EX2

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().

EX3

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.

EX4

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).

EX5

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 }.

EX6

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.

EX7

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.

EX8

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.

EX9

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.

EX10

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.

← Cours Mini-projet →