OpenAPI可选对象默认值



假设您有以下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的值呢?

  1. field2未指定,因此必须将其视为null
  2. field2应该是具有默认值的对象构建:{subfield: 2}
  3. OpenAPI没有回答这个问题,这取决于我来决定我的应用程序应该做什么

正确的行为将是您的替代1,但有一个转折点。

CCD_ 11应当被认为是";不存在";而不是null,因为这些情况之间存在一些差异,请参阅https://github.com/OAI/OpenAPI-Specification/issues/1775进行一些与这种差异有关的讨论。

从验证的角度来看,field2没有声明为nullable,像{"field2": null}这样的对象不应该是有效的,但{}应该是。

是否";不存在";或者null应该以不同的方式处理,这取决于您的应用程序。

相关内容

  • 没有找到相关文章

最新更新