7

ネストされたリソース (配信に属するコンテンツ) のパスを定義しています。クライアントが 404 を受け取った場合、配信 ID が見つからなかったか、配信に指定されたタイプのコンテンツが含まれていなかった可能性があります。

OpenAPI (YAML) を使用してそれをモデル化するにはどうすればよいですか?

私は今これを持っています...

 paths:
  '/deliveries/{id}/content/articles':
    get:
      summary: Retrieves articles from a delivery
      description: Retrieves all articles from a single delivery
      [...]
      responses:
        '200':
          description: articles found
          schema:
            $ref: '#/definitions/Article'
        '404':
          description: delivery not found
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: delivery did not contain any articles
          schema:
            $ref: '#/definitions/Error'

...しかし、Swagger Editor から JSON を保存すると、最後の応答 (「配信には記事が含まれていませんでした」) を除くすべての 404 応答がドロップされます。

4

1 に答える 1

5

ステータス コードごとに複数の応答タイプを使用することは、OpenAPI/Swagger 2.0 では許可されていませんが、OpenAPI 3.0 ではを使用しoneOfてサポートされています。

OpenAPI 2.0 では、404 応答に対して単一のスキーマのみを持つことができます。

      responses:
        '404':
          description: delivery not found, or delivery did not contain any articles
          schema:
            $ref: '#/definitions/Error'

...
definitions:
  Error:
    type: object
    properties:
      status:
        type: integer
      type:
        type: string
      message:
        type: string

Errorペイロードの場所は次のとおりです。

{
  "status": 404,
  "type": "DeliveryNotFoundError",
  "message": "delivery not found"
}

{
  "status": 404,
  "type": "NoArticlesInDeliveryError",
  "message": "delivery did not contain any articles"
}
于 2016-11-18T17:26:28.343 に答える