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-/_]+');
}
}