web-dev-qa-db-ja.com

Swagger 2.0での配列の列挙型の定義

type": "array",
"items": {
    "type": "string",
    "enum": ["MALE","FEMALE","WORKER"]
}

または

type": "array",
"items": {
    "type": "string",
},
"enum": ["MALE","FEMALE","WORKER"]

これに関する仕様には何もありません。もちろん、目標は列挙型の値を表示するswagger-uiを取得することです。

11
Esko Piirainen

最初のケースは正しく、最近のswagger-uiは列挙値の多肢選択を生成します。

enter image description here

5
Esko Piirainen

列挙したいものによって異なります。

各列挙値は、記述されたオブジェクトタイプでなければなりません

  • 最初のケースでは文字列
  • 2番目の文字列の配列

最初の構文はこれらはこの配列内の文字列の可能な値ですを意味します

AnArray:
  type: array
  items:
    type: string
    enum:
      - MALE
      - FEMALE
      - WORKER

この配列には複数の文字列を含めることができますが、各文字列にはMALE、FEMALE、またはWORKERの値が必要です。

Rendering in Swagger UI: You have to put mouse pointer on the value to see enum

2つ目はこれらはこの配列の可能な値ですを意味します

AnotherArray:
  type: array
  items:
    type: string
  enum:
    - 
      - FEMALE
      - WORKER
    -
      - MALE
      - WORKER

したがって、各列挙値は配列です。この例では、この配列は可能な値[[FEMALE]、 "WORKER"]と["MALE"、 "WORKER"]のみを持つことができます。

残念ながら、この構文が有効であっても、列挙値はSwagger UIに表示されません。

7
Arnaud Lauret