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

Могешь описать последовательность обработки входящих запросов в NestJS?

Компании, где спрашивали
Бизнес-Азимут

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

sobes.tech AI

В NestJS обработка входящего HTTP-запроса происходит в несколько этапов:

  1. Приём запроса — Express (или Fastify) получает HTTP-запрос.
  2. Middleware — запрос проходит через middleware, которые могут изменять запрос или выполнять дополнительные действия (логирование, аутентификация и т.д.).
  3. Guards — проверяют, разрешён ли доступ к определённому маршруту (например, авторизация).
  4. Interceptors (перехватчики) — могут изменять данные запроса или ответа, выполнять дополнительные операции до и после вызова обработчика.
  5. Pipes — преобразуют и валидируют входящие данные (например, преобразование строк в числа).
  6. Обработчик контроллера — вызывается метод контроллера, соответствующий маршруту.
  7. Обработка результата — результат обработчика может быть дополнительно обработан интерсепторами.
  8. Отправка ответа — сформированный ответ отправляется клиенту.

Пример упрощённого потока:

@Get(':id')
@UseGuards(AuthGuard)
@UsePipes(ValidationPipe)
getItem(@Param('id') id: number) {
  return this.itemsService.findById(id);
}

Здесь сначала сработает guard для проверки доступа, затем pipe для валидации параметра, после чего вызовется метод контроллера.