如何在 OpenAPI 中至少需要两个参数之一?

GIS*_*han 4 openapi

我正在使用 OpenAPI 3 并有两个查询参数,其中至少一个是必需的,但哪个无关紧要。

即,作为sudocode:

if parameter_1 OR parameter_2:
    do stuff
else:
    error
Run Code Online (Sandbox Code Playgroud)

这在 OpenAPI 3 中可能吗?就我所见,规范或 JSON Schema 规范中都没有提及它。

Hel*_*len 5

这种情况与互斥参数非常相似。基本上,您可以使用对象类型参数,其中parameter_1parameter_2是对象属性;这样的对象将被序列化为?parameter_1=value1&parameter_2=value2. 可以使用minProperties或表示“至少之一”约束anyOf

openapi: 3.0.2
...
paths:
  /foo:
    get:
      parameters:
        - in: query
          name: param
          required: true
          schema:
            type: object
            properties:
              parameter_1:
                type: string
              parameter_2:
                type: string
            additionalProperties: false

            # Option 1
            minProperties: 1

            # Option 2
            # anyOf:
            #  - required: [parameter_1]
            #  - required: [parameter_2]
Run Code Online (Sandbox Code Playgroud)