2017-11-11 225 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模式只显示了mode财产,没有list-request架构属性的被包含在内。我究竟做错了什么?

+1

[在扬鞭文档结合defintions]的可能的复制(https://stackoverflow.com/questions/29463634/combining-defintions-in-swagger-docs) – Helen

回答

1

您需要allOf$ref与其他属性组合。

此外,所需的属性需要在模式级别的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"] 
      } 
     } 
     } 
    ] 
    } 
}