我的 NestJs 模块设置为:
@Module({
controllers: [MyController],
})
export class MyModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(MyMiddleware)
.forRoutes('/myRoute');
}
}
如何将 MyMiddleware 应用于仅 GET /myRoute 而不是 POST /myRoute?
正如文档所示这样的事情应该做:
@Module({
controllers: [MyController],
})
export class MyModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(MyMiddleware)
.forRoutes({ path: '/myRoute', method: RequestMethod.GET });
}
}
我认为 @UseMiddleware() 是一个缺失的功能,因为目前我不知道如何实现我的逻辑。
我想创建一个可重用的 WithActionQueryParam('authenticate') 中间件/装饰器,并通过以下方式将其集成到 AuthController 中:
@WithActionQueryParam('authenticate')
@UseGuards(JwtAuthGuard)
@Get()
async authenticate(@Req() req: Request) {
return req.user;
}
@WithActionQueryParam('refreshToken')
@UseGuards(JwtAuthGuard)
@Get()
async refreshToken() {
return this.authService.handleRefreshToken(req)
}
我希望能够通过查询参数处理请求,这对于 Express 来说非常容易,但不幸的是对于 Nest JS 来说就不那么容易了。
我知道我可以在第一个控制器中放置一些 if 条件,但我更喜欢上面描述的方式。