Скажем, у меня есть такая модель:
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/ Кажется, они говорят, что это не рекомендуется:
Примечание. При проверке данных серверы и клиенты будут проверять объединенную модель на соответствиекаждая модель, из которой он состоит.Рекомендуется избегать использования конфликтующих свойств (например, свойств, которые имеют одинаковые имена, но разные типы данных).
Поэтому мой вопрос: как это должно быть сделано правильно?