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

时间:2018-12-14 15:11:10

标签: openapi

我使用的是OpenAPI 3,它有两个查询参数,至少需要一个 ,但这无关紧要。

即,作为sudocode:

if parameter_1 OR parameter_2:
    do stuff
else:
    error

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

1 个答案:

答案 0 :(得分:0)

这种情况与mutually exclusive parameters非常相似。基本上,您可以使用对象类型参数,其中parameter_1parameter_2是对象属性。这样的对象将以?parameter_1=value1&parameter_2=value2的形式serialized。可以使用minPropertiesanyOf表示“至少一个”约束。

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]