Interceptors en NestJS

Introduction

Dans cet article, nous allons plonger dans le concept des intercepteurs dans Nest.js. Les intercepteurs permettent de transformer les données entrantes ou sortantes, d’effectuer des tâches supplémentaires avant ou après l’exéc…


This content originally appeared on DEV Community and was authored by David le codeur

Image description

Introduction

Dans cet article, nous allons plonger dans le concept des intercepteurs dans Nest.js. Les intercepteurs permettent de transformer les données entrantes ou sortantes, d'effectuer des tâches supplémentaires avant ou après l'exécution d'une méthode de route, et bien plus encore. Ils sont un outil puissant pour gérer les aspects transversaux de vos applications.

Qu'est-ce qu'un Intercepteur ?

Les intercepteurs dans Nest.js sont des classes annotées avec @Injectable() qui implémentent l'interface NestInterceptor. Ils interviennent dans le cycle de requête/réponse et peuvent transformer ou manipuler les données à différentes étapes.

Exemple de Code

Voici un exemple simple pour illustrer comment créer un intercepteur dans Nest.js :

import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable()
export class TransformInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    console.log('Before...');
    const now = Date.now();

    return next
      .handle()
      .pipe(
        map(data => ({
          data,
          timestamp: new Date().toISOString(),
          duration: `${Date.now() - now}ms`,
        })),
      );
  }
}

Explication du Code

  • TransformInterceptor implémente NestInterceptor.
  • La méthode intercept reçoit le contexte d'exécution (ExecutionContext) et le gestionnaire d'appel (CallHandler).
  • Nous ajoutons une logique pour mesurer la durée de l'exécution et ajouter un timestamp aux données de réponse.
  • next.handle() continue le traitement de la requête et nous utilisons l'opérateur map de RxJS pour transformer les données de la réponse.

Utilisation dans un Contrôleur

Pour utiliser cet intercepteur dans un contrôleur, vous pouvez l'appliquer à une route spécifique ou globalement :

import { Controller, Get, UseInterceptors } from '@nestjs/common';
import { TransformInterceptor } from './transform.interceptor';

@Controller('users')
@UseInterceptors(TransformInterceptor)
export class UsersController {
  @Get()
  findAll(): string {
    return 'This action returns all users';
  }
}

Conclusion

Les intercepteurs sont extrêmement utiles pour implémenter des fonctionnalités transversales telles que la transformation des réponses, le logging, et bien plus encore. En utilisant les intercepteurs, vous pouvez centraliser et réutiliser ces fonctionnalités à travers votre application.

Prochaines Étapes

  • Explorez d'autres types d'intercepteurs pour des cas d'utilisation spécifiques comme le logging, la gestion des erreurs, et la mise en cache.
  • Combinez les intercepteurs avec d'autres fonctionnalités avancées de Nest.js comme les guards et les pipes pour une gestion complète des requêtes et des réponses.

Ressources Additionnelles


This content originally appeared on DEV Community and was authored by David le codeur


Print Share Comment Cite Upload Translate Updates
APA

David le codeur | Sciencx (2024-07-08T12:59:34+00:00) Interceptors en NestJS. Retrieved from https://www.scien.cx/2024/07/08/interceptors-en-nestjs/

MLA
" » Interceptors en NestJS." David le codeur | Sciencx - Monday July 8, 2024, https://www.scien.cx/2024/07/08/interceptors-en-nestjs/
HARVARD
David le codeur | Sciencx Monday July 8, 2024 » Interceptors en NestJS., viewed ,<https://www.scien.cx/2024/07/08/interceptors-en-nestjs/>
VANCOUVER
David le codeur | Sciencx - » Interceptors en NestJS. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/07/08/interceptors-en-nestjs/
CHICAGO
" » Interceptors en NestJS." David le codeur | Sciencx - Accessed . https://www.scien.cx/2024/07/08/interceptors-en-nestjs/
IEEE
" » Interceptors en NestJS." David le codeur | Sciencx [Online]. Available: https://www.scien.cx/2024/07/08/interceptors-en-nestjs/. [Accessed: ]
rf:citation
» Interceptors en NestJS | David le codeur | Sciencx | https://www.scien.cx/2024/07/08/interceptors-en-nestjs/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.