如何将我的 swagger 定义数组限制为 0 或 3

Gir*_*shB 10 swagger-2.0 openapi

我的狂妄定义如下:

someDef:
    type: object
    properties:
      enable:
        type: boolean
        default: false
      nodes:
        type: array
        maxItems: 3
        items:
          type: object
          properties:
            ip:
              type: string
              default: ''
Run Code Online (Sandbox Code Playgroud)

我的节点是数组,它有 maxitems: 3。我希望我的节点项长度为 0 或 3。提前致谢。

Hel*_*len 18

“0 或 3 项”可以在 OpenAPI 3.x ( ) 中定义openapi: 3.x.x,但不能在 OpenAPI 2.0 ( swagger: '2.0') 中定义。

开放API 3.x

您可以oneOfminItems和结合使用maxItems来定义“0 或 3 项”条件:

# openapi: 3.0.0

nodes:
  type: array
  items:
    type: object
    properties:
      ip:
        type: string
        default: ''
  oneOf:
    - minItems: 0
      maxItems: 0
    - minItems: 3
      maxItems: 3
Run Code Online (Sandbox Code Playgroud)

请注意,虽然oneOf是 OpenAPI 3.0 规范的一部分(即您可以编写包含 的 API 定义oneOf),但实际工具支持oneOf可能会有所不同。

开放API 2.0

OAS 2 没有办法定义“0 或 3 个项目”。您最多可以做的是使用maxItems: 3来定义上限。