26

私はyamlでswagger定義を書いています。このような定義があるとします。

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
      ...

ペイロードの id プロパティが PUT 操作に必要であり、POST 操作ではオプション (またはまったく表示されない) であることを示す方法はありますか?

4

3 に答える 3

23

モデルを個別に定義する必要があります。

ただし、除外と差異の場合にはオプションがあります。

簡単なケースですが、除外する場合は、除外されたプロパティを使用して のモデルを作成しますModelA。次に、追加のプロパティを追加して定義ModelBします。ModelA

ModelB:
  allOf:
    - $ref: "#/definitions/ModelA"
    - type: object
      properties:
        id:
          type: string

違いを定義したい場合は、上記と同じ方法に従い、idfromを除外しModelAます。ModelB次に、 andModelCを拡張として定義しModelA、プロパティをそれらに追加しidます。それぞれに独自の制限があります。JSON スキーマを使用すると、上記の元の例に従って、定義を「オーバーライド」することができる場合があります。ただし、これは実際にはオーバーライドするものではなく、単純な間違いを犯さないように JSON スキーマの概念をよりよく理解する必要があるため、当面はこの道を進むことをお勧めします。

于 2015-06-17T18:18:03.957 に答える