假设您有以下 OpenAPI requestBody 规范:
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
field1:
type: number
default: 1
field2:
type: object
properties:
subfield:
type: number
default: 2
请求正文包含:
number
字段object
字段,包含一个 number
字段,默认值为 2如果客户端发送空负载,我们应该同意 field1
值应该是 1
,但是 field2
值呢?
field2
未指定,因此必须将其视为空field2
应该是具有默认值的对象构建:{subfield: 2}
答案 0 :(得分:2)
正确的行为将是您的替代1
,但稍有不同。
field2
应被视为“不存在”而不是 null
,因为这些情况之间存在一些差异,请参阅 https://github.com/OAI/OpenAPI-Specification/issues/1775 以了解与该差异相关的一些讨论。
从验证的角度来看,field2
没有声明为 nullable
,像 {"field2": null}
这样的对象不应该是有效的,但 {}
会是。
是否应以不同方式处理“不存在”或 null
取决于您的应用程序。