Nest.js中可选布尔查询参数未在Swagger中显示
解决Nest.js Swagger不显示可选布尔查询参数的问题
你的问题出在自定义ParseOptionalBool管道上——Nest.js的Swagger模块无法自动识别自定义管道修饰的查询参数,需要手动通过@ApiQuery装饰器显式声明参数的Swagger元数据。
修改控制器代码
在findAll方法上添加@ApiQuery装饰器,明确参数的名称、类型、是否必填、默认值等信息:
import { ApiQuery } from '@nestjs/swagger'; // ... @Get() @ApiQuery({ name: 'includeArtifacts', type: Boolean, required: false, default: false, description: '是否包含工件信息,默认值为false' }) findAll( @Query('includeArtifacts', ParseOptionalBool) includeArtifacts = false, ) { return this.toursService.findAll({ includeArtifacts }); }
原理说明
默认情况下,Nest.js Swagger会自动识别内置管道(比如ParseBoolPipe)修饰的参数,但自定义管道没有内置的Swagger元数据映射。通过@ApiQuery装饰器,我们直接给Swagger模块提供该参数的完整描述,就能让参数在Swagger文档中正常显示。
内容的提问来源于stack exchange,提问作者Gabe
相关产品推荐
相关产品推荐

