Слой на маршрут в Nest
Пусть служебный шаг нужен только одной теме, а соседние адреса его не должны затрагивать. Вешать слой на всё приложение лишнее: лишние заголовки появятся там, где страница о них не просила.
В настройке цепочки указывают строку префикса темы. Тогда слой срабатывает для запросов под этим префиксом и не трогает остальные маршруты того же приложения.
Покажем на примере постов:
import { NextFunction, Request, Response } from 'express';
export function postLogger(
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 { postLogger } from './post.logger.js';
@Module({
controllers: [PostController],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(postLogger).forRoutes('posts');
}
}
Повесьте слой только на префикс
работников в WorkersModule,
не затрагивая другие темы рядом
с WorkerController.