1

我在 OpenAPI3 (Swagger) 中定义了一个 REST API。

我有一个 API,它有一个 POST,它使用我在组件部分定义的模型,如下所示:

post:
  summary: "Used to add some data"
  operationId: postMyData
  requestBody:
    content:
      application/json:
        schema:
           $ref: '#/components/schemas/MyModel'
    required: true

components:
  schemas:
    MyModel:
      type: object
      properties:
        SomeProperty1:
          type: string
        SomeProperty2:
          type: string
        SomeProperty3:
          $ref: '#/components/schemas/SomeOtherModel'
        SomeProperty4:
          type: string

现在我有一个 PATCH API 调用,我想用它来更新 MyModel 的一些数据,例如 SomeProperty1 和 SomeProperty4。

我应该为此 PATCH 操作定义一个新模型吗?像这样:

MyPATCHModel:
  type: object
  properties:
    SomeProperty1:
     type: string
    SomeProperty4:
     type: string

然后在 PATCH 操作的 requestBody 中使用这个新的 MyPATCHModel?这里的标准做法是什么,因为我将有几个与此类似的 API。

4

1 回答 1

1

查看有关组合 JSON 模式的文档。

例如,在您的情况下,您可以MyModel使用 PATCH 方法中使用的两个属性定义一个共享模式,然后再定义一个用于与仅 POST 属性组合的NewMyModel模式。allOfMyModel

检查此问题以获取具体示例。

于 2019-08-12T19:08:47.830 回答