具有命名元素的数组的 Swagger 模型
Swagger model for an array with named elements
为 json 数组编写 swagger 模型对我来说似乎非常简单,例如如果我有这个数组:
[
{
"name": "dave",
"number": 123
},
{
"name": "mary",
"number": 456
}
]
我会为它编写以下 swagger 模型:
"schema": {
"type": "array",
"items": {
"$ref": "Student"
}
}
"Student": {
"id": "Student",
"required": [
"name",
"number"
],
"properties": {
"name": {
"type": "string"
},
"number": {
"type": "integer",
"format": "int32"
}
}
}
但是,我有以下情况:
{
"123": {
"name": "dave"
},
"456": {
"name": "mary"
}
}
如何编写这个模型?
提前致谢。
要描述请求模型,您需要使用 additionalProperties
属性。请注意,这在 Swagger 2.0 中可用,而在早期版本中不可用。
"definitions": {
"Student": {
"type": "object",
"required": [ "name" ],
"properties": {
"name": {
"type": "string"
}
}
},
"Students": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/Student"
}
}
}
在上方您会看到 Student
模型,该模型当前包含 "name" 属性,但我假设您会添加更多模型。从上面的示例中,"name" 属性 是必需的。
第二个模型是 Students
,它是一个包含地图 (additionalProperties) 的对象。每个 属性 都是 Student
类型(通过引用模型完成,但理论上可以内联定义)。
您不能做的一件事是声明键(或 属性 名称)是整数或给定类型。 patternedProperties
可以支持这在 Swagger 2.0 中不可用。换句话说,没有限制密钥内容的技术方法。
为 json 数组编写 swagger 模型对我来说似乎非常简单,例如如果我有这个数组:
[
{
"name": "dave",
"number": 123
},
{
"name": "mary",
"number": 456
}
]
我会为它编写以下 swagger 模型:
"schema": {
"type": "array",
"items": {
"$ref": "Student"
}
}
"Student": {
"id": "Student",
"required": [
"name",
"number"
],
"properties": {
"name": {
"type": "string"
},
"number": {
"type": "integer",
"format": "int32"
}
}
}
但是,我有以下情况:
{
"123": {
"name": "dave"
},
"456": {
"name": "mary"
}
}
如何编写这个模型?
提前致谢。
要描述请求模型,您需要使用 additionalProperties
属性。请注意,这在 Swagger 2.0 中可用,而在早期版本中不可用。
"definitions": {
"Student": {
"type": "object",
"required": [ "name" ],
"properties": {
"name": {
"type": "string"
}
}
},
"Students": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/Student"
}
}
}
在上方您会看到 Student
模型,该模型当前包含 "name" 属性,但我假设您会添加更多模型。从上面的示例中,"name" 属性 是必需的。
第二个模型是 Students
,它是一个包含地图 (additionalProperties) 的对象。每个 属性 都是 Student
类型(通过引用模型完成,但理论上可以内联定义)。
您不能做的一件事是声明键(或 属性 名称)是整数或给定类型。 patternedProperties
可以支持这在 Swagger 2.0 中不可用。换句话说,没有限制密钥内容的技术方法。