Sobes.tech
Назад к вопросам
Junior — Middle
132

Объясните концепцию Interceptor в фреймворке NestJS и его основные функции

Ответ от нейросети

sobes.tech AI

В NestJS Interceptor — это класс, который позволяет перехватывать и обрабатывать входящие запросы и исходящие ответы. Основные функции Interceptor'ов:

  • Изменение или трансформация данных ответа перед отправкой клиенту.
  • Логирование и мониторинг времени выполнения запросов.
  • Кэширование результатов запросов.
  • Обработка ошибок и исключений.
  • Добавление дополнительной логики до и после вызова обработчика маршрута.

Interceptor реализует интерфейс NestInterceptor и метод intercept(context, next), где можно выполнить код до и после вызова следующего обработчика.

Пример простого Interceptor'а, который логирует время выполнения запроса:

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

@Injectable()
export class LoggingInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    const now = Date.now();
    return next
      .handle()
      .pipe(
        tap(() => console.log(`Request handled in ${Date.now() - now}ms`))
      );
  }
}

Interceptor'ы помогают централизованно управлять поведением запросов и ответов в приложении.