如何从另一个模式继承模式属性?
How to inherit schema properties from another schema?
我正在使用 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
属性 和 none。我做错了什么?
您需要 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"]
}
}
}
]
}
}
我正在使用 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
属性 和 none。我做错了什么?
您需要 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"]
}
}
}
]
}
}