我应该在OpenAPI中定义不同的POST和PATCH模型吗?

时间:2019-08-12 09:58:16

标签: rest swagger openapi openapi-generator

我正在OpenAPI3(Swagger)中定义REST API。

我有一个具有POST的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。

1 个答案:

答案 0 :(得分:0)

检查combining JSON schemas上的文档。

例如,您可以使用PATCH方法中使用的两个属性来定义共享的MyModel模式,然后再使用NewMyModel来组合{{1 }}以及仅用于POST的属性。

检查this question以获取具体示例。