Как переопределить тип данных модели в Swagger / OAS 3? - PullRequest
1 голос
/ 28 мая 2019

Скажем, у меня есть такая модель:

Film:
      properties:
        title:
          type: string
        duration:
          type: string
        actors:
          type: array
          items:
            $ref: '#/components/schemas/Person'

И у меня есть много моделей, которые наследуют это и добавляют некоторые дополнительные свойства.

Но у меня также есть модельв котором actors - это не Person с, а Alien с.

Нужно ли мне удалять actors из общей модели и добавлять ее конкретно в каждую модель наследования?(Надеюсь, что нет.)

Могу ли я просто наследовать от Film и переопределить атрибут actors?

FilmWithAliens:
  allOf:
      - $ref: 'components/schemas/Film'
      - properties:
            actors:
                type: array
                items:
                  $ref: '#/components/schemas/Alien'

Кажется, это работает правильно при генерации документации с использованием Swagger UI.Но если я прочитаю документы Swagger здесь: https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/ Кажется, они говорят, что это не рекомендуется:

Примечание. При проверке данных серверы и клиенты будут проверять объединенную модель на соответствиекаждая модель, из которой он состоит.Рекомендуется избегать использования конфликтующих свойств (например, свойств, которые имеют одинаковые имена, но разные типы данных).

Поэтому мой вопрос: как это должно быть сделано правильно?

...