Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Как использовать интерсепторы?

Interceptors (перехватчики) проверяют способность разработчика обрабатывать запросы и ответы на уровне контроллеров или маршрутов, добавляя дополнительные этапы обработки данных.

Короткий ответ

Interceptors в NestJS используются для выполнения логики до или после вызова метода. Они подходят для таких задач, как логирование, обработка ошибок, модификация ответов и кеширование. Перехватчики реализуются через интерфейс NestInterceptor и применяются через декоратор @UseInterceptors.

Длинный ответ

Interceptors в NestJS — это мощный инструмент для работы с запросами и ответами. Они позволяют:

- Логировать входящие запросы или результаты выполнения.

- Изменять данные ответа перед отправкой клиенту.

- Управлять потоками данных с использованием RxJS.

- Обрабатывать исключения на уровне, независимом от бизнес-логики.

 

Каждый Interceptor реализует метод intercept, который принимает два параметра:

- ExecutionContext — содержит информацию о текущем запросе.

- CallHandler — обрабатывает выполнение метода и возвращает поток данных.

 

Пример: создание 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> {
    console.log('Начало обработки запроса');
    const start = Date.now();

    return next.handle().pipe(
      tap(() => console.log(`Обработка завершена за ${Date.now() - start}ms`)),
    );
  }
}

Применение Interceptor через декоратор:

import { Controller, Get, UseInterceptors } from '@nestjs/common';

@Controller('example')
@UseInterceptors(LoggingInterceptor)
export class ExampleController {
  @Get()
  getData() {
    return { message: 'Данные успешно получены' };
  }
}
  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • Nest.js

Ключевые слова

#interceptors

#nestinterceptor

#executioncontext

#callhandler

#rxjs

Подпишись на Node.js Developer в телеграм

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.