javascript - Nest.js - 根据 header 值跳过中间件

标签 javascript node.js typescript express nestjs

我有一个使用 nestjsMiddlewareConsumer 的应用程序。 我想知道是否有办法根据 header 值跳过中间件?

我检查了文档,发现我只能使用路径或方法(就像我现在所做的那样),但也许我遗漏了一些东西?

我的代码示例:

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);

 }
}

最佳答案

这对于 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
  }
}

关于javascript - Nest.js - 根据 header 值跳过中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58689608/

相关文章:

javascript - 只读属性和 ngOnInit

angular - TypeScript Angular 项目 : use undefined or null for properties in classes?

javascript - 停止执行 Javascript 函数(客户端)或对其进行调整

javascript - 能够动态地将子列表项添加到 ViewModel

django - 服务器对象(Socket.io)中没有配置方法

javascript - 在 Node 中获取 future 7 天名称的最佳方法是什么?

javascript - 如何制作从右到左的下拉菜单

javascript - 将 iterable 中的前 N ​​项转换为数组

node.js - 将 Node.js 作为 Windows 服务运行

javascript - 鼠标离开输入时显示错误