在Nest.js的请求体中添加描述

问题描述 投票:0回答:1

我是第一次使用 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
装饰器提供的类型反射?

nestjs openapi
1个回答
0
投票

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.