web-dev-qa-db-ja.com

Swaggerスキーマオブジェクト定義に少なくとも1つの要素を含む配列を要求する

swagger.yamlに次のようなスキーマオブジェクト定義があります。

User:
  type: object
  properties:
    username:
      type: string
      description: the user name
    colors:
      type: array
      items: {
        type: string,
        enum: [ "red", "blue", "green" ]
      }
      description: user must have one or more colors associated
  required:
    - username
    - colors

ただし、生成されたサーバーは、colorsフィールドを含まない必須の本体パラメーターとしてこのスキーマオブジェクトを使用するPOSTリクエストを引き続き受け入れます。

colorフィールドが常にUserスキーマオブジェクトで必要であり、理想的には列挙型から少なくとも1つ以上のアイテムが含まれている必要があるようにSwaggerを構成できますか?

12
Byte Commander

使用する minItems: 1。さらに、配列内でuniqueItemsを適用できます。

    colors:
      type: array
      minItems: 1
      uniqueItems: true
      items:
        type: string
        enum: [ "red", "blue", "green" ]
16
Helen