2016-11-16 2 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을 저장할 때, 그것은 마지막 하나를 제외하고 모두 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

수 당신은 Error Yumm의 실제 정의를 보여 주시겠습니까? – Gargoyle

+0

오류 정의가 추가되었습니다. – Helen

관련 문제