OpenAPI 可选对象默认值

OpenAPI optional object default value

假设您有以下 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

请求正文包含:

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

  1. field2没有指定,所以必须认为是null
  2. field2 应该是具有默认值的对象构建:{subfield: 2}
  3. OpenAPI 不回答这个问题,这由我决定我的应用程序应该做什么

正确的行为将是您的替代选择1,但要有所不同。

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

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

“不存在”或 null 是否应该以不同方式处理取决于您的申请。