如何在某些操作所需的定义中创建字段而不是其他操作

Jos*_*ing 17 swagger swagger-2.0 swagger-editor

我正在用yaml写出我的招摇定义.假设我的定义看起来像这样.

paths:
  /payloads:
    post:
      summary: create a payload
      ...
      parameters:
      - in: body
        name: payload
        description: New payload
        required: true
        schema:
          $ref: "#/definitions/payload"
    put:
      summary: update a payload
      ...
      parameters:
      - in: body
        name: payload
        description: Updated existing payload
        required: true
        schema:
          $ref: "#/definitions/payload"
...
definitions:
  payload:
    properties:
      id:
        type: string
      someProperty:
        type: string
      ...
Run Code Online (Sandbox Code Playgroud)

有没有办法可以指示PUT操作需要有效负载的id属性,并且POST操作是可选的(或者根本不应该出现)?

Ron*_*Ron 19

您必须单独定义模型.

但是,您可以选择排除和区别的情况.

如果您想要排除,这是一个简单的情况,请创建一个包含排除属性的模型,比如说ModelA.然后定义ModelBModelA加上附加属性:

ModelB:
  allOf:
    - $ref: "#/definitions/ModelA"
    - type: object
      properties:
        id:
          type: string
Run Code Online (Sandbox Code Playgroud)

如果您要定义差异,请按照上述相同方法,并排除idfrom ModelA.然后定义ModelBModelC扩展ModelA并向其添加id属性,每个属性都有自己的限制.请注意,JSON Schema可以让您在某些情况下按照上面的原始示例"覆盖"定义.但是,由于它并没有真正重写,并且需要更好地理解JSON Schema的概念以避免出现简单的错误,我建议现在就开始使用此路径.