通过 Swagger/OpenAPI 为 additionalProperties 指定多种类型
Specifying multiple types for additionalProperties through Swagger/OpenAPI
我希望在 OpenAPI 中表示以下 JSON 对象:
{
"name": "Bob",
"age": 4,
...
}
属性的数量和 属性 名称没有完全预先确定,所以我希望使用 additionalProperties。但是,我不太确定 OpenAPI/Swagger 2.0 将如何表示它。我试过这个:
Person:
type: object
additionalProperties:
type:
- int
- string
或 JSON 等效项:
{
"Person": {
"type": "object",
"additionalProperties": {
"type": ["int", "string"]
}
}
}
但这并没有奏效。有什么方法可以保留我要表示的 JSON 对象的结构,特别是字符串和整数,而不是任意对象类型?
OpenAPI 3.1
在 OpenAPI 3.1 中,type
关键字可以获取类型列表:
Person:
type: object
additionalProperties:
type: [string, integer]
OpenAPI 3.x
OpenAPI 3.0+ 支持 oneOf
因此您可以使用:
Person:
type: object
additionalProperties:
oneOf:
- type: string
- type: integer
OpenAPI 2.0
OpenAPI 2.0 不支持多类型值。您最多可以使用 ,这意味着附加属性可以是任何东西 - 字符串、数字、布尔值等等 - 但您不能指定确切的类型。
Person:
type: object
additionalProperties: {}
这相当于:
Person:
type: object
我希望在 OpenAPI 中表示以下 JSON 对象:
{
"name": "Bob",
"age": 4,
...
}
属性的数量和 属性 名称没有完全预先确定,所以我希望使用 additionalProperties。但是,我不太确定 OpenAPI/Swagger 2.0 将如何表示它。我试过这个:
Person:
type: object
additionalProperties:
type:
- int
- string
或 JSON 等效项:
{
"Person": {
"type": "object",
"additionalProperties": {
"type": ["int", "string"]
}
}
}
但这并没有奏效。有什么方法可以保留我要表示的 JSON 对象的结构,特别是字符串和整数,而不是任意对象类型?
OpenAPI 3.1
在 OpenAPI 3.1 中,type
关键字可以获取类型列表:
Person:
type: object
additionalProperties:
type: [string, integer]
OpenAPI 3.x
OpenAPI 3.0+ 支持 oneOf
因此您可以使用:
Person:
type: object
additionalProperties:
oneOf:
- type: string
- type: integer
OpenAPI 2.0
OpenAPI 2.0 不支持多类型值。您最多可以使用
Person:
type: object
additionalProperties: {}
这相当于:
Person:
type: object