2016-11-16 14 views
2

ネストされたリソース(配信に属するコンテンツ)のパスを定義しています。クライアントが404を取得した場合、配信IDが見つからなかったか、または配信に指定されたタイプのコンテンツが含まれていなかったかのいずれかである可能性があります。OpenAPI(Swagger)で複数の404原因を指定するにはどうすればよいですか?

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' 

...しかし、私は闊歩エディタからJSONを保存するとき、それは最後の1以外のすべての404の応答をdropps(「配達はしませんでしたすべての記事を含む ")。

答えて

1

ステータスコードごとに複数の応答タイプはOpenAPI/Swagger 2.0では使用できませんが、OpenAPI 3.0 by using oneOfではサポートされています。言う、

 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ペイロードができ:

OpenAPIの2.0では、あなただけの404応答のための単一のスキーマを持つことができます

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

{ 
    "status": 404, 
    "type": "NoArticlesInDeliveryError", 
    "message": "delivery did not contain any articles" 
} 
+0

でしたあなたはエラーの実際のYAML定義を表示してください? – Gargoyle

+0

エラー定義が追加されました。 – Helen

関連する問題