Exercices â N06 Middleware Express
10 exercices pour maßtriser les middleware Express. Chaque exercice vous demande d'écrire une fonction middleware complÚte.
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.
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().
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.
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).
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.
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.
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.
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.
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.
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().