NestJS:在 POST 请求中将 @Param 和 body 值设置为 DTO

NestJS: Set @Param and body values to DTO in POST request

我有一个 POST 请求条目,我在其中指定一个“帐户”参数作为路径参数,并在 body 中指定一个布尔值来设置验证状态,例如:

POST /users/authorized/USER_ACCOUNT1

body 会携带:

valid=1

我有以下控制器条目:

@ApiTags('users')
    @ApiOperation( { summary: 'Set user account status.  '} )
    @Post('authorized/:account')
    async setAuthStatus(params: SetUserAuthDto) {
        return this.userService.setUserAuthDto(params);
    }

如何将“帐户”和请求 body“状态”参数同时提供给同一个 DTO?我假设我不能在那里同时使用装饰器 @Param 和 @Body 。 我应该使用管道吗?

我是 NestJS 的新手,请原谅我的无知。

谢谢。

同时使用 @Params()@Body() 没有错。这实际上是一个常见的模式

@Post('authorized/:account')
async setAuthStatus(@Param('account') accountValue: string, @Body() body: SetUserAuthDto) {
  // do your thing here
}

但是,如果你想使用单个装饰器,你可以使用 createParamDecorator 方法并将它 return req.paramsreq.body 放在一个合并的对象中, 所以你可以做 @ParamAndBody()