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

Несколько слоёв в Nest

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

В одном вызове apply передают несколько функций или классов. Nest выстроит их в цепочку: сначала отработает первый слой, затем второй, и только потом вызовется метод контроллера. Каждый слой по-прежнему обязан передать управление дальше.

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

import { NextFunction, Request, Response } from 'express'; export function postLogger( req: Request, res: Response, next: NextFunction, ) { res.setHeader('X-Post-Logger', '1'); next(); }

Второй слой добавит ещё один служебный заголовок:

import { NextFunction, Request, Response } from 'express'; export function postStamp( req: Request, res: Response, next: NextFunction, ) { res.setHeader('X-Post-Stamp', '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'; import { postStamp } from './post.stamp.js'; @Module({ controllers: [PostController], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer .apply(postLogger, postStamp) .forRoutes('posts'); } }

Повесьте подряд два слоя на адреса работников в WorkersModule вместе с WorkerController. Оба должны записать свой заголовок и передать управление дальше.

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