[英]How to change query parameters serialization using nestjs/swagger?
最近我将项目中的nestjs/swagger
包更新为^4.0.0
。 之前 Swagger 将我的查询参数序列化如下:
/resources?parameter=1,2,3
现在看起来像这样:
/resources?parameter=1¶meter=2¶meter=3
我的查询的 DTO 对象如下所示:
class QueryDTO {
@ApiProperty({
required: false,
type: [Number],
})
@IsOptional()
readonly parameter?: number[];
}
我怎样才能改变这种行为?
我在nestjs/swagger 4.5.9
我通过定义 DTO 使其工作(注意format: 'form'
)
@IsNotEmpty()
@ApiProperty({
type: [Number],
format: 'form',
})
@IsArray()
@Transform((value: string) => value.split(',').map(item => Number(item)))
@IsNumber({}, {each: true})
deviceId: Array<number>;
作为一种解决方法,您可以从 DTO 中删除 @ApiProperty 并在具有样式和分解选项的控制器方法上使用 @ApiQuery 装饰器(只需保持与 dto 属性相同的参数名称)
@Get('resources')
@ApiQuery({
name: 'parameter',
required: false,
explode: false,
type: Number,
isArray: true
})
getResources(@Query('parameter') parameter?: number[]) {}
您仍然可以将 DTO 对象原样用于其他按常规方式工作的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.