【问题标题】:Nestjs exclude path for middlewareNestjs排除中间件的路径
【发布时间】:2019-12-11 03:07:54
【问题描述】:

我想为所有路线申请MyMiddleware(例如/foo/bar),但不适用于/

以下配置不起作用,因为它也将中间件应用于/

@Module({
  controllers: [MyController],
})
export default class AppModule implements NestModule {

  configure(consumer: MiddlewareConsumer) {
    consumer.apply(MyMiddleware).exclude('/').forRoutes('/*');
  }

}

有什么帮助吗?

【问题讨论】:

    标签: express nestjs


    【解决方案1】:

    我自己解决了。

    我误解了这个文档段落:

    字符 ?、+、* 和 () 可以在路由路径中使用,并且是它们的正则表达式对应物的子集。连字符 (-) 和点 (.) 由基于字符串的路径逐字解释

    我发现链接到https://www.npmjs.com/package/path-to-regexp的expressJs的语法是一样的。

    我使用了这个有用的工具http://forbeslindesay.github.io/express-route-tester/ 来找出幕后应用的正则表达式

    我的情况的解决方案很简单:

    @Module({
      controllers: [MyController],
    })
    export default class AppModule implements NestModule {
      configure(consumer: MiddlewareConsumer) {
        consumer.apply(MyMiddleware).forRoutes('/[a-zA-Z0-9-/_]+');
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 2011-03-16
      相关资源
      最近更新 更多