Exercices — N06 Middleware Express

10 exercices pour maßtriser les middleware Express. Chaque exercice vous demande d'écrire une fonction middleware complÚte.

EX1

Middleware logger

Écrivez un middleware logger qui affiche dans la console [METHOD] /chemin Ă  chaque requĂȘte. Un middleware reçoit (req, res, next) et doit appeler next() pour passer au middleware suivant.

EX2

Middleware auth — Bearer token

Écrivez un middleware auth qui vĂ©rifie que req.headers.authorization === 'Bearer secret123'. Si le token est absent ou invalide, retournez un res.status(401).json(...). Sinon, appelez next().

EX3

Middleware validateBody

Écrivez un middleware validateBody qui s'assure que req.body.name existe et n'est pas vide. Retournez 400 avec un message d'erreur si le champ est absent. Appelez next() si la validation est rĂ©ussie.

EX4

Middleware notFound — Gestionnaire 404

Écrivez un middleware notFound qui attrape toutes les requĂȘtes vers des routes inexistantes. Il doit retourner un 404 avec un JSON indiquant le chemin demandĂ©. Ce middleware se place aprĂšs toutes les routes avec app.use(notFound).

EX5

Middleware errorHandler — 4 paramùtres

Écrivez un middleware errorHandler avec 4 paramùtres (err, req, res, next). Express reconnaüt les error handlers à leurs 4 params. Retournez un 500 avec l'objet erreur en JSON. Utilisez err.status || 500 pour le code HTTP.

EX6

Middleware corsHeaders

Écrivez un middleware corsHeaders qui dĂ©finit le header Access-Control-Allow-Origin: * sur toutes les rĂ©ponses. Utilisez res.setHeader() ou res.set(). Appelez next() pour continuer.

EX7

Middleware timer — X-Response-Time

Écrivez un middleware timer qui mesure la durĂ©e de traitement de chaque requĂȘte avec Date.now(). Utilisez res.on('finish', ...) pour calculer la durĂ©e une fois la rĂ©ponse envoyĂ©e. Ajoutez le header X-Response-Time Ă  la rĂ©ponse.

EX8

Middleware sanitize — Nettoyage du body

Écrivez un middleware sanitize qui parcourt toutes les propriĂ©tĂ©s de req.body et appelle .trim() sur celles qui sont des strings. Utilisez Object.keys() et vĂ©rifiez le type avant d'appliquer trim.

EX9

Middleware rateLimiter

Écrivez un middleware rateLimiter qui limite le nombre de requĂȘtes par IP. Stockez les compteurs dans un Map (clĂ© = IP, valeur = compteur + timestamp). Retournez 429 Too Many Requests si la limite est dĂ©passĂ©e dans la fenĂȘtre temporelle.

EX10

Cñblage complet — app.use(logger) + app.use(auth)

CrĂ©ez une application Express complĂšte avec logger et auth cĂąblĂ©s dans le bon ordre. L'ordre compte : logger doit logger mĂȘme les requĂȘtes rejetĂ©es par auth, donc il doit ĂȘtre enregistrĂ© avant auth. Ajoutez une route, un handler 404 et appelez app.listen().

← Cours Mini-projet →