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.params
和 req.body
放在一个合并的对象中, 所以你可以做 @ParamAndBody()
我有一个 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.params
和 req.body
放在一个合并的对象中, 所以你可以做 @ParamAndBody()