[英]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.