Интересно, как можно уменьшить / ограничить отклик пути OpenAPI в случае сложного компонента отклика.
Допустим, у меня есть компонент Order, предназначенный для клиента и имеющий элементы OrderItems в качестве дочерних элементов. Каждый OrderItem указывает на продукт, и у каждого продукта есть поставщик.
Я пытался представить это как модель (это не Yaml, '-' используется для представления члена / поля / свойства)
Order
- id
- customer => Customer
- id
- name
- email
- items => OrderItem
- id
- description
- price
- product => Product
- id
- vendor => Vendor
- name
Так что, если у меня теперь есть путь
/orders/{id}
get:
operationId: getOrder
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
Тогда это будет означать (я думаю), что реализация этого определения должна будет возвращать полное дерево объектов от Order через Customer и OrderLine до Vendor по запросу для данного Order по его идентификатору. Правильно?
(Как) можно указать, что реализация должна возвращать только части дерева. Например, объекты OrderLine могут быть включены, но продукт не должен быть включен. Вместо продукта он должен возвращать идентификатор продукта или объект Link. То же самое относится и к Заказчику.
Я знаю, что мог бы создать выделенную схему ответа с ее собственными сокращенными свойствами, но затем, к тому времени, когда я определил все пути, больше не будет использоваться определенный компонент.
Так возможно ли иметь что-то вроде
/orders/{id}
get:
operationId: getOrder
responses:
'200':
content:
application/json:
schema:
allOf
- $ref: '#/components/schemas/Order'
- type: object
properties:
??? something to indicate that the OrderLines objects of Order should return a productId and not a Product object.
??? something to indicate that the Customer object should not be returned but instead a customerId or Link object.