Используя Swagger 2.0, Как я могу показать модель, которая является массивом, который принимает несколько типов? - PullRequest
0 голосов
/ 06 мая 2019

Я использую app.swaggerhub.com для создания спецификации Swagger 2.0.

Мой код выглядит так:

036  definitions:

---    // code that defines 'fieldRequirement' and 'slideRequirement'

106    requirement:
107      type: array
108      items:
109        oneOf:
110          - $ref: '#/definitions/fieldRequirement'
111          - $ref: '#/definitions/slideRequirement'

Возвращает 3 ошибки в одной строке (106):

106 should NOT have additional properties additionalProperty: oneOf
106 should be array
106 should match some schema in anyOf

То, что я пытаюсь выполнить, - это модель, которая допускает либо fieldRequirement, либо slideRequirement в качестве элемента массива в требовании.

1 Ответ

1 голос
/ 06 мая 2019

oneOf не поддерживается Swagger 2.0, только Swagger 3.0 .

Однако вы можете использовать полиморфизм с полем discriminator, если можетене обновляйтесь до swagger 3.0, в вашем случае вам нужен файл вроде:

requirement:
  type: array
  items:
    - $ref: '#/definitions/Requirement'

...

definitions:
  Requirement:
    type: object
    discriminator: requirementType
    properties:
      requirementType:
        type: string
    required:
    - requirementType
  FieldRequirement:
    allOf:
    - $ref: '#/definitions/Requirement'
    - type: object
      properties:
        ...
  SlideRequirement:
    allOf:
    - $ref: '#/definitions/Requirement'
    - type: object
      properties:
        ...
...