Nest.js - пропустить промежуточное ПО на основе значения заголовка - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть приложение, которое использует nestjs и MiddlewareConsumer. Я хотел бы знать, есть ли способ пропустить промежуточное программное обеспечение, основанное на значении заголовка?

Я проверил документацию и увидел, что могу использовать только путь или метод (как я делаю сейчас), но, может быть, я кое-что понял? м отсутствует?

Пример моего кода:

export class AuthorizationModule implements NestModule {
configure(consumer: MiddlewareConsumer): void {
    consumer.apply(DiscriminatorValidator).with(common.USERS).forRoutes(
        {path: RELATIVE_RESOURCE_PATH, method: RequestMethod.POST},{path: RELATIVE_RESOURCE_PATH, method: RequestMethod.PUT});
    consumer.apply(validate).forRoutes(AuthorizationController);
    consumer.apply(HeadersValidator).with().forRoutes(AuthorizationController);
    consumer.apply(ContextAndHeadersMiddleware).forRoutes(AuthorizationController);

 }
}

1 Ответ

4 голосов
/ 04 ноября 2019

Это невозможно с MiddlewareConsumer.


Тем не менее, само промежуточное ПО может проверить, применимо ли оно или должно быть пропущено:

@Injectable()
export class ContextAndHeadersMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: Function) {
    if (req.get('my-header') === 'SKIP') {
      // skip this middleware if header value is set
      return next();
    }
    // middleware logic
  }
}
...