【问题标题】:NestJS: Set @Param and body values to DTO in POST requestNestJS:在 POST 请求中将 @Param 和 body 值设置为 DTO
【发布时间】:2021-06-01 03:55:45
【问题描述】:

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

POST /users/authorized/USER_ACCOUNT1

身体会携带:

valid=1

我有以下控制器条目:

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

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

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

谢谢。

【问题讨论】:

    标签: api parameters request nestjs dto


    【解决方案1】:

    同时使用@Params()@Body() 没有任何问题。这其实是一种常见的模式

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

    但是,如果您想使用单个装饰器,您可以使用 createParamDecorator 方法并让它在单个合并对象中返回 req.paramsreq.body,因此您可以使用 @ParamAndBody()

    【讨论】:

    • 谢谢!我仍在思考 DTO 在哪些方面有用,在哪些方面有些多余。
    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2020-05-09
    • 2019-10-03
    相关资源
    最近更新 更多