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

Слой на контроллер в Nest

У темы несколько методов под одним префиксом, и слой нужен на каждый из них. Перечислять адреса по одному долго, а префикс строкой не всегда совпадает с тем, как собран класс страницы.

Вместо строки в цепочку передают сам класс контроллера. 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'; } @Get(':id') getPost(): string { return 'One post'; } }

Слой повесим на класс контроллера:

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(PostController); } }

Подключите слой ко всем адресам WorkerController в модуле WorkersModule.

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