Interceptor

NestJS 🟡 Mid

Définition

Classe implémentant NestInterceptor qui enveloppe l'exécution du handler via RxJS. Peut transformer la réponse, ajouter du logging ou gérer le cache.

Analogie

Comme un emballeur cadeau : le produit (réponse) passe par lui avant et après pour être transforme.

Exemple de code

@Injectable()
export class TransformInterceptor implements NestInterceptor {
  intercept(ctx: ExecutionContext, next: CallHandler) {
    return next.handle().pipe(
      map(data => ({ data, timestamp: Date.now() })),
    );
  }
}

Cas d'usage

Wrapper toutes les réponses dans un format standard, mesurer le temps de réponse ou implémenter du cache.

Anti-pattern

Utiliser un interceptor pour de la validation de données au lieu d'un pipe.

Termes liés

#core#interview

En entretien

  1. Quelle différence entre un Interceptor et un Guard ?

    Le Guard décide si la requête peut continuer, alors que l'Interceptor enveloppe l'exécution du handler via RxJS pour transformer la réponse, ajouter du logging ou gérer du cache, comme un emballeur cadeau qui transforme le produit avant et après. Le guard bloque en amont, l'interceptor agit autour de l'exécution.

  2. Pourquoi ne pas utiliser un interceptor pour valider des données d'entrée ?

    Parce que c'est l'anti-pattern identifié : la validation de données c'est le rôle d'un pipe, pas d'un interceptor. L'interceptor est plutôt fait pour wrapper les réponses dans un format standard ou mesurer un temps de réponse.

Fiche mise à jour le 2026-09-27

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