Express Nestjs排除中间件的路径

Express Nestjs排除中间件的路径,express,nestjs,Express,Nestjs,我想将MyMiddleware应用于所有路由(例如/foo,/bar),但不适用于/ @Module({ controllers: [MyController], }) export default class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(MyMiddleware).exclude('/').forRoutes('/*');

我想将
MyMiddleware
应用于所有路由(例如
/foo
/bar
),但不适用于
/

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

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

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

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

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

}
有什么帮助吗?

我自己解决了

我误解了这一段:

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

我发现语法与链接到的expressJs相同

我使用了这个有用的工具来找出在幕后应用的正则表达式

解决我的问题的办法很简单:

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