我有一个JSON schema文件,其中一个属性被定义为string
或null
"type":["string", "null"]
当转换为YAML (用于OpenAPI/Swagger)时,它将变为:
type:
- 'null'
- string
但是Swagger编辑器显示一个错误:
架构的“类型”键必须是字符串
在OpenAPI中定义可为空的属性的正确方法是什么?
发布于 2018-01-05 21:09:36
这取决于OpenAPI版本。
OpenAPI 3.1
您的示例在JSON 3.1中有效,它与OpenAPI Schema2020-12完全兼容。
type:
- 'null' # Note the quotes around 'null'
- string
# same as
type: ['null', string]
上面的代码相当于:
oneOf:
- type: 'null' # Note the quotes around 'null'
- type: string
OAS3.0.x(见下文)中使用的nullable
关键字在OAS3.1中不存在,已将其删除以支持'null'
类型。
OpenAPI 3.0.x
可以为空的字符串定义如下:
type: string
nullable: true
这与JSON Schema语法不同,因为3.0.x之前的OpenAPI版本使用自己的flavor of JSON Schema (“扩展子集”)。其中一个区别是type
必须是单个类型,而不能是类型列表。此外,也没有'null'
类型;相反,nullable
关键字用作type
修饰符,以允许null
值。
OpenAPI 2.0
OAS2不支持'null'
作为数据类型,所以您不太走运。您只能使用type: string
。然而,一些工具支持x-nullable: true
作为供应商扩展,即使nulls不是OpenAPI 2.0规范的一部分。
考虑迁移到OpenAPI v3以获得对nulls的适当支持。
https://stackoverflow.com/questions/48111459
复制相似问题