OpenAPI 可选对象默认值

时间:2021-01-04 17:37:21

标签: 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 字段,包含一个 number 字段,默认值为 2

如果客户端发送空负载,我们应该同意 field1 值应该是 1,但是 field2 值呢?

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

1 个答案:

答案 0 :(得分:2)

正确的行为将是您的替代1,但稍有不同。

field2 应被视为“不存在”而不是 null,因为这些情况之间存在一些差异,请参阅 https://github.com/OAI/OpenAPI-Specification/issues/1775 以了解与该差异相关的一些讨论。

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

是否应以不同方式处理“不存在”或 null 取决于您的应用程序。