класс, который правильно расширяется

м API я хотел бы иметь простую модель для моей коллекции и более сложную модель для моего индивидуального ресурса. Например:

запрос GET на/libraries должен вернуться

BaseLibrary:
    type: object
    properties:
        library_id:
          type: string
          description: The id of the library
        display_name:
          type: string
          description: Name of the library
        href:
          type: string
          description: The URI linking to this library.

в то время как запрос к конкретной библиотеке должен возвращать все вышеперечисленное, включая дополнительные книги параметров:

Таким образом, запрос GETlibraries/{library_id} должен вернуть:

ExtendedLibrary:
    type: object
    properties:
        library_id:
          type: string
          description: The id of the library
        display_name:
          type: string
          description: Name of the library
        href:
          type: string
          description: The URI linking to this library.
        books:
          type: array
          description: The books in this library
          items:
            $ref: "#/definitions/books"

Я бы очень хотел, чтобы не нужно было определять «BaseLibrary» дважды, и хотел бы просто смоделировать дополнительную «ExtendedLibrary», которая содержит все ответы базовой библиотеки и свойство дополнительных книг.

Я пробовал много разных вещей, наиболее близкими к успеху были следующие определения:

definitions:
  BaseLibrary:
    type: object
    properties:
        library_id:
          type: string
          description: The id of the library.
        display_name:
          type: string
          description: Name of the library
        href:
          type: string
          description: The URI linking to this library.

  ExtendedLibrary:
    type: object
    properties:
      $ref: "#/definitions/BaseLibrary/properties"
      books:
        type: array
        description: The available books for this library.
        items:
          $ref: "#/definitions/Book"

Однако это дает мне предупреждение «Дополнительные свойства ссылок JSON будут проигнорированы: книги», и выходные данные, кажется, игнорируют это дополнительное свойство. Есть ли чистый способ справиться с моей проблемой? Или мне просто нужно скопировать и вставить всю мою модель BaseLibrary в мою модель ExtendedLibrary?

Ответы на вопрос(1)

Ваш ответ на вопрос