РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpMwCM 22 of 201 menu
◀ ▶

Класс промежуточного слоя в Nest

Функции хватает для простой записи в ответ, но иногда слою нужны поля и зависимости, как у сервиса. Тогда логику оформляют классом, который Nest умеет создавать сам.

Класс помечают @Injectable и реализуют контракт промежуточного слоя с методом use. Параметры те же, что у функции: запрос и ответ из Express и колбэк передачи. Класс регистрируют в провайдерах модуля и передают в цепочку через apply.

Покажем на примере постов:

import { Injectable, NestMiddleware } from '@nestjs/common'; import { NextFunction, Request, Response } from 'express'; @Injectable() export class PostLoggerMiddleware implements NestMiddleware { use(req: Request, res: Response, next: NextFunction) { res.setHeader('X-Post-Logger', '1'); next(); } }

Контроллер списка:

import { Controller, Get } from '@nestjs/common'; @Controller('posts') export class PostController { @Get() getPosts(): string { return 'All posts'; } }

Модуль держит контроллер, провайдер слоя и настройку цепочки:

import { MiddlewareConsumer, Module, NestModule, } from '@nestjs/common'; import { PostController } from './post.controller.js'; import { PostLoggerMiddleware } from './post.logger.middleware.js'; @Module({ controllers: [PostController], providers: [PostLoggerMiddleware], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer .apply(PostLoggerMiddleware) .forRoutes('posts'); } }

Опишите слой классом для адресов работников, запишите его в провайдеры WorkersModule и подключите к WorkerController. Заголовок в ответе должен быть виден до тела страницы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить