Back to questions
Junior — Middle
131
Объясните концепцию Interceptor в фреймворке NestJS и его основные функции
Answer from AI
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'ы помогают централизованно управлять поведением запросов и ответов в приложении.