如何从另一个模式继承模式属性?
问题描述:
我使用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
架构属性的被包含在内。我究竟做错了什么?
答
您需要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"]
}
}
}
]
}
}
[在扬鞭文档结合defintions]的可能的复制(https://stackoverflow.com/questions/29463634/combining-defintions-in-swagger-docs) – Helen