簡體   English   中英

如何使用 nestjs/swagger 更改查詢參數序列化?

[英]How to change query parameters serialization using nestjs/swagger?

最近我將項目中的nestjs/swagger包更新為^4.0.0 之前 Swagger 將我的查詢參數序列化如下:

/resources?parameter=1,2,3

現在看起來像這樣:

/resources?parameter=1&parameter=2&parameter=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM