我有JSON架构文件,其中一个属性定义为string
或null
:
"type":["string", "null"]
转换为YAML(与OpenAPI / Swagger一起使用)时,它变为:
type:
- 'null'
- string
但Swagger编辑器显示错误:
Schema" type" key必须是一个字符串
在OpenAPI中定义可空属性的正确方法是什么?
答案 0 :(得分:26)
type
作为类型数组
type:
- string
- 'null'
在OpenAPI / Swagger中无效(即使它在JSON Schema中有效)。 OpenAPI的type
关键字需要单一类型,不能是类型数组。
对null
的支持取决于您使用的OpenAPI版本:
在 OpenAPI 3.0 中,使用nullable
关键字定义可空类型:
type: string
nullable: true # <----
OpenAPI 2.0 不支持null
作为数据类型,因此如果使用2.0,则运气不佳。您只能使用type: string
。也就是说,有些工具支持x-nullable: true
作为供应商扩展,即使空值不是OpenAPI 2.0规范的一部分。