【发布时间】:2022-03-09 22:41:02
【问题描述】:
假设我有两个路由的控制器:
@Controller('events')
export class EventController {
@Get('my')
async getMyEvents() {
return "A"
}
@Get(':eventId')
async getEvent(@Param('eventId', ParseUUIDPipe) eventId: string) {
return "B"
}
}
我需要排除所有路线,除了有参数的路线:
export class EventModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(AuthMiddleware)
.exclude({path: 'api/events/:eventId', method: RequestMethod.GET})
.forRoutes(EventController)
}
}
但它不起作用,它还排除了路由api/events/my,那么如何避免呢?
【问题讨论】:
-
为什么不使用
forRoutes专门用于您想要到达的路线?或者为什么不使用拦截器/守卫呢? -
因为实际上我有很多路线,所以在
forRoutes中列出所有路线会很不方便 -
您可能会使用正则表达式而不是直接路径。类似
new RegExp('api\/events\/[^me]*')