Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Nest.js: nestjs, middleware

Зачем может быть нужен Middleware в Nest.js

Этот вопрос проверяет понимание роли middleware в фреймворке Nest.js для обработки входящих запросов перед их попаданием в обработчики маршрутов.

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

Middleware в Nest.js — это функции, которые выполняются перед обработчиками маршрутов (controller's handlers). Они имеют доступ к объектам запроса и ответа, а также к следующей функции в цепочке middleware. Они используются для таких задач, как логирование, сжатие данных, парсинг cookies, проверка CORS и аутентификация.

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

Middleware — это фундаментальная часть конвейера обработки запроса в Nest.js. Он работает на уровне модуля или глобально.

Что можно делать с помощью Middleware:

  • Логирование: Записывать информацию о каждом входящем запросе.

  • Аутентификация и авторизация: Проверять JWT-токены или сессии доступа к защищенным маршрутам.

  • Парсинг данных: Например, парсинг тела запроса в JSON (это встроенный middleware).

  • Валидация: Предварительная проверка данных запроса.

  • CORS: Настройка заголовков для кросс-доменных запросов.

  • Сжатие данных: Например, использование middleware compression.

Пример создания простого middleware для логирования:

// logging.middleware.ts
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';

@Injectable()
export class LoggingMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: NextFunction) {
    console.log(`Request... ${req.method} ${req.url}`);
    const start = Date.now();
    
    // Колбэк выполнится, когда ответ будет отправлен
    res.on('finish', () => {
      const duration = Date.now() - start;
      console.log(`Response... ${req.method} ${req.url} ${res.statusCode} ${duration}ms`);
    });
    
    next(); // Передаем управление следующему middleware/обработчику
  }
}

Регистрация Middleware в модуле:

// app.module.ts
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer
      .apply(LoggingMiddleware)
      .forRoutes('*'); // Применяем ко всем маршрутам
  }
}

Вывод: Middleware — это мощный инструмент для сквозной функциональности, который позволяет инкапсулировать общую логику обработки запросов в одном месте.

  • Аватар

    Node.js Guru

    Demetra

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • Nest.js

    Nest.js

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

#nestjs

#middleware

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

  • Аватар

    Node.js Guru

    Demetra

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