我想知道在复杂响应组件的情况下如何减少/限制OpenAPI路径的响应。
让我们说我有一个针对客户的Order Component,并将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'
那么,这意味着(我认为)该定义的实现将必须从ID上的给定Order请求中返回Order over Customer和OrderLine上的完整对象树,直到Vendor。对吧?
(如何)可以指示实现只需要返回树的一部分。例如,可以包含OrderLine对象,但不应该包含产品。代替产品,它应返回产品ID或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.