首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在OpenAPI (Swagger)中定义一个可以是字符串或null的属性?

如何在OpenAPI (Swagger)中定义一个可以是字符串或null的属性?
EN

Stack Overflow用户
提问于 2018-01-05 18:17:53
回答 1查看 55.5K关注 0票数 85

我有一个JSON schema文件,其中一个属性被定义为stringnull

代码语言:javascript
复制
"type":["string", "null"]

当转换为YAML (用于OpenAPI/Swagger)时,它将变为:

代码语言:javascript
复制
type:
  - 'null'
  - string

但是Swagger编辑器显示一个错误:

架构的“类型”键必须是字符串

在OpenAPI中定义可为空的属性的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-05 21:09:36

这取决于OpenAPI版本。

OpenAPI 3.1

您的示例在JSON 3.1中有效,它与OpenAPI Schema2020-12完全兼容。

代码语言:javascript
复制
type:
  - 'null'   # Note the quotes around 'null'
  - string

# same as
type: ['null', string]

上面的代码相当于:

代码语言:javascript
复制
oneOf:
  - type: 'null'   # Note the quotes around 'null'
  - type: string

OAS3.0.x(见下文)中使用的nullable关键字在OAS3.1中不存在,已将其删除以支持'null'类型。

OpenAPI 3.0.x

可以为空的字符串定义如下:

代码语言:javascript
复制
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的适当支持。

票数 144
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48111459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档