OpenAPI 3:如何减少OpenAPI路径的响应对象属性?

时间:2019-05-07 05:43:05

标签: openapi

我想知道在复杂响应组件的情况下如何减少/限制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.

0 个答案:

没有答案