我是第一次使用 Nest.js 并迁移旧版 Node.js API。我正在创建第一条路线,以确保这将保留 OpenAPI 规范功能。我已经使用一条接受 JSON 主体的路由创建了控制器。 body 类使用
@nestjs/swagger
中的装饰器,当使用 @Body
装饰器时,我可以看到模式显示在 Swatter UI 中:
@Controller('my-api')
export class CertificatesController {
@ApiOperation({ })
@Post()
async create(
@Req() req: Request,
@Res() res: Response,
@Body() body: TheBody,
): Promise<Result> {
//...
}
}
但是,原始 API 具有的一件事是 body 参数的
description
属性,并且似乎没有办法将其添加到我的 TheBody
类中。我尝试向该方法添加一个 ApiBody
装饰器,这让我可以添加描述,但这会遮蔽 body
的模式,导致它将类型显示为字符串,而不是由 TheBody
定义的模式.
如何在 Nest.js 中向 body 参数添加描述而不删除
@Body
装饰器提供的类型反射?
npm i --保存类验证器类转换器(https://docs.nestjs.com/techniques/validation) npm install --save @nestjs/swagger (https://docs.nestjs.com/openapi/introduction)
像这样制作 TheBody 类,
import { ApiProperty } from '@nestjs/swagger';
import { IsEmail, IsNotEmpty } from 'class-validator';
export class DTOExample {
@ApiProperty({
description: 'The email of the user',
example: '[email protected]',
})
@IsEmail()
email: string;
@ApiProperty({
description: 'The password of the user',
example: 'password',
})
@IsNotEmpty()
password: string;
}