如何在Nest.js中为请求体添加描述且保留类型反射?
解决Nest.js请求体添加描述且保留Schema结构的问题
直接用@ApiBody结合getSchemaRef就能搞定,既保留TheBody类生成的Schema,又能加请求体描述,具体步骤如下:
- 导入所需的Swagger工具函数
import { ApiBody, getSchemaRef } from '@nestjs/swagger';
- 在控制器方法上配置
@ApiBody
@Post('/your-api-path') @ApiBody({ description: '替换成你的请求体描述内容,比如"创建资源所需的参数集合"', schema: getSchemaRef(TheBody, { // 可选:如果需要强制要求请求体必填,加这个配置 required: true, }), }) async handleRequest(@Body() body: TheBody) { // 业务逻辑代码 }
原理说明
getSchemaRef会自动读取TheBody类上通过@ApiProperty等Swagger装饰器定义的字段结构,不会像直接写schema: { type: 'string' }那样覆盖原有Schema。这样既保留了@Body带来的类型反射能力,又能给整个请求体添加描述。
如果是要给单个字段加描述,直接在TheBody的属性上用@ApiProperty({ description: '单个字段的描述' })就可以,和上面的方法不冲突。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

