класс, который правильно расширяется
м 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?