【问题标题】:How to require at least one of two parameters in OpenAPI?如何在 OpenAPI 中要求至少两个参数之一?
【发布时间】:2019-05-15 21:04:41
【问题描述】:

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

即,作为 sudocode:

if parameter_1 OR parameter_2:
    do stuff
else:
    error

这在 OpenAPI 3 中可行吗?据我所知,规范中没有提到它,或者 JSON Schema 规范中也没有提到它。

【问题讨论】:

标签: openapi


【解决方案1】:

此场景与mutually exclusive parameters 非常相似。基本上,您可以使用对象类型参数,其中parameter_1parameter_2 是对象属性;这样的对象将是serialized?parameter_1=value1&parameter_2=value2。 “至少一个”约束可以使用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]

还有一个现有的功能请求来支持parameters 列表中各个参数之间的相互依赖关系:
https://github.com/OAI/OpenAPI-Specification/issues/256

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2011-10-07
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    相关资源
    最近更新 更多