Middleware

NestJS 🟡 Mid

Définition

Fonction ou classe exécutée avant le route handler, avec accès a request, response et next(). Compatible avec les middlewares Express/Fastify.

Analogie

Comme un agent de sécurité a l'entrée d'un immeuble : il vérifie ton badge avant de te laisser monter.

Exemple de code

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: NextFunction) {
    console.log(`${req.method} ${req.url}`);
    next();
  }
}

Cas d'usage

Logger les requêtes, parser des headers custom ou modifier la requête avant qu'elle atteigne le controller.

Anti-pattern

Utiliser un middleware pour de la logique métier spécifique a une route au lieu d'un interceptor ou guard.
#core#interview

En entretien

  1. Quelle différence entre un Middleware et un Guard dans NestJS ?

    Le middleware s'exécute avant le route handler avec accès à request, response et next(), un peu comme un agent de sécurité à l'entrée d'un immeuble qui vérifie ton badge avant de te laisser monter, et il est compatible avec les middlewares Express/Fastify. Le guard, lui, décide explicitement si la requête continue via CanActivate, ce qui n'est pas le rôle du middleware.

  2. Pourquoi éviter de mettre de la logique métier spécifique à une route dans un middleware ?

    Parce que c'est l'anti-pattern identifié : le middleware est fait pour du générique comme logger les requêtes ou parser des headers, pas pour de la logique propre à une route précise. Pour ça, un interceptor ou un guard est plus adapté.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre