假设您有以下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
请求正文包含:
- 默认值为1的
number
字段 object
字段,包含一个默认值为2的number
字段
如果客户端发送了一个空的有效负载,我们应该同意field1
的值应该是1
,但field2
的值呢?
field2
未指定,因此必须将其视为nullfield2
应该是具有默认值的对象构建:{subfield: 2}
- OpenAPI没有回答这个问题,这取决于我来决定我的应用程序应该做什么
正确的行为将是您的替代1
,但有一个转折点。
CCD_ 11应当被认为是";不存在";而不是null
,因为这些情况之间存在一些差异,请参阅https://github.com/OAI/OpenAPI-Specification/issues/1775进行一些与这种差异有关的讨论。
从验证的角度来看,field2
没有声明为nullable
,像{"field2": null}
这样的对象不应该是有效的,但{}
应该是。
是否";不存在";或者null
应该以不同的方式处理,这取决于您的应用程序。