2017-11-11 12 views
0

ReDoc을 사용하여 OpenAPI 2 (Swagger) JSON 파일을 사용하여 API 문서를 시각화합니다. 나는 다음과 같이 두 번째로 첫 번째 스키마를 포함하여이 개 요청 입력 매개 변수를 선언하기 위해 노력하고있어 :다른 스키마의 스키마 속성을 상속하는 방법은 무엇입니까?

... 
"definitions": { 
    "list-request": { 
     "type": "object", 
     "properties": { 
      "token":{ 
       "type": "string", 
       "format": "access-token", 
       "required": true 
      }, 
      "userId":{ 
       "type": "integer", 
       "required": true, 
       "format": "int32" 
      }, 
      "mode": { 
       "type": "string", 
       "required": false, 
       "default": "lite", 
       "enum": [ 
        "lite", 
        "detailed" 
       ] 
      }, 
      ... // other peroperties 
     }, 
     "xml": { 
      "name": "list-request" 
     } 
    }, 
    "list-request-lite":{ 
     "$ref": "#/definitions/list-request", 
     "properties":{ 
      "mode": { 
       "type": "string", 
       "required": false, 
       "enum": ["lite"] 
      } 
     } 
    }, 
    ... 
} 

을하지만 그것은 작동하지 않습니다 - list-request-lite 스키마 그냥 list-request 스키마 속성의 mode 재산과 없음을 보여줍니다 포함되어 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+1

가능한 복제 (https://stackoverflow.com/questions/29463634/combining-defintions-in-swagger-docs) – Helen

답변

1

다른 속성과 $ref을 결합하려면 allOf이 필요합니다.

또한 필요한 속성은 스키마 수준의 required 배열에 나열되어야합니다. 개별 속성에는 required 특성이 없습니다. [자신감 워드 프로세서에 결합되어 정의를]의

"definitions": { 
    "list-request": { 
    "type": "object", 
    "properties": { 
     "token": { 
     "type": "string", 
     "format": "access-token" 
     }, 
     "userId": { 
     "type": "integer", 
     "format": "int32" 
     }, 
     "mode": { 
     "type": "string", 
     "default": "lite", 
     "enum": [ 
      "lite", 
      "detailed" 
     ] 
     } 
    }, 
    "xml": { 
     "name": "list-request" 
    }, 
    "required": [  // <---- required properties for this schema 
     "token", 
     "userId" 
    ] 
    }, 

    "list-request-lite": { 
    "allOf": [  // <--------- 
     { 
     "$ref": "#/definitions/list-request" 
     }, 
     { 
     "type": "object", 
     "properties": { 
      "mode": { 
      "type": "string", 
      "enum": ["lite"] 
      } 
     } 
     } 
    ] 
    } 
}