【问题标题】:Separate swagger implementation from controller code将 swagger 实现与控制器代码分开
【发布时间】:2019-12-26 03:00:11
【问题描述】:

我正在尝试在 NestJS 中记录我的 api。我遵循了 NestJS 文档,它运行良好,但我想知道是否有任何方法可以将 swagger 装饰器与控制器代码分开。由于 api 开始增长,控制器代码开始变得有点混乱,因为在请求方法之间放置装饰器会干扰查看流程的方式。

我已经使用了装饰器,但是当您需要进行端点防护验证时,管道变得非常大且没有重点,因为添加的装饰器数量众多,我并不感到困惑 swagger 在实际执行流程中并不重要因为它是守卫、验证者等。

@Post()
@Roles('user')
@ApiResponse({ status: 201, description: 'The token has been successfully created.'})
@ApiResponse({ status: 403, description: 'Forbidden.'})
@UsePipes(new ValidationPipe())
@HttpCode(200)
async createToken(@Body() createTokenDto: CreateTokenDto) {
  this.tokenBuilderService.createToken(createTokenDto);
}

【问题讨论】:

    标签: node.js swagger nestjs


    【解决方案1】:

    不。您不能将 swagger 装饰器与控制器代码分开。 我通常把它放在最后,将它们与管道和防护装置分开:

    @Post()
    @Roles('user')
    @UsePipes(new ValidationPipe())
    @HttpCode(201)
    @ApiResponse({ status: 201, description: 'The token has been successfully created.'})
    @ApiResponse({ status: 403, description: 'Forbidden.'})
    async createToken(@Body() createTokenDto: CreateTokenDto) {
      this.tokenBuilderService.createToken(createTokenDto);
    }
    

    【讨论】:

    • 感谢您的回复 单独实现它会很棒,也许他们可以实现一个中间件,它现在涵盖所有功能我想我会用swagger-jsdoc手动创建文档
    • 如果 swagger 依赖于我们的控制器,那就太好了。我的意思是这样的:builder.addController(controller1).addController(controller2)
    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    相关资源
    最近更新 更多