Ral*_*hJS 8 node.js swagger nestjs
我正在尝试在 NestJS 中记录我的 api。我遵循了 NestJS 文档,它运行得很好,但我想知道是否有办法将 swagger 装饰器与控制器代码分开。由于 api 开始增长,控制器代码开始变得有点混乱,因为请求方法之间的装饰器会干扰流程的显示方式。
我已经使用了装饰器,但是当您需要端点防护验证时,管道会变得相当大且不集中,因为添加的装饰器数量很多,而且我并不感到困惑,大摇大摆在实际执行流程中并不那么重要守卫、验证者等
@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);
}
Run Code Online (Sandbox Code Playgroud)
小智 6
这是一个很老的问题,但只是指出来,以便人们知道。您可以使用applyDecorators从中导入的函数进行分离@nestjs/common,该函数接受装饰器数组并在单个装饰器中为您组合它们: https: //docs.nestjs.com/custom-decorators#decorator-composition
在您的示例中,您可以执行以下操作:
// controller.decorator.ts
export function SwaggerDecorator() {
return applyDecorators(
ApiResponse({ status: 201, description: 'The token has been successfully created.' }),
ApiResponse({ status: 403, description: 'Forbidden.' })
);
}
Note that the decorators are without the @ symbol.
Run Code Online (Sandbox Code Playgroud)
并将其导入到控制器文件中:
import { SwaggerDecorator } from './controller.decorator'
@Post()
@Roles('user')
@SwaggerDecorator()
@UsePipes(new ValidationPipe())
@HttpCode(200)
async createToken(@Body() createTokenDto: CreateTokenDto) {
this.tokenBuilderService.createToken(createTokenDto);
}
Run Code Online (Sandbox Code Playgroud)
我刚刚遇到这个问题,它清除了我的控制器中的大量招摇代码。
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |