Глобальный слой в Nest
Пусть один служебный шаг нужен на каждой странице API, и перечислять темы по отдельности неудобно. Новый контроллер легко забыть добавить в список, и тогда шаг на его адресах не сработает.
Слой можно повесить на все маршруты сразу. В Nest 12 для этого в цепочке указывают шаблон пути, который охватывает любой адрес приложения, а не одну звёздочку в строке.
Покажем на примере постов:
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('{*path}');
}
}
Сделайте глобальный слой для API
работников в WorkersModule
или корневом модуле, куда входит
WorkerController. Слой
должен срабатывать на любом адресе
приложения.