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

Исключение маршрута в 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('latest') getLatest(): string { return 'Latest post'; } }

Слой повесим на все адреса, кроме получения последней записи:

import { MiddlewareConsumer, Module, NestModule, RequestMethod, } 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) .exclude({ path: 'posts/latest', method: RequestMethod.GET, }) .forRoutes('{*path}'); } }

Повесьте глобальный слой на API работников и снимите его с одного служебного адреса WorkerController в WorkersModule. Остальные страницы темы должны по-прежнему проходить через слой.

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