首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在OpenAPI中至少要求两个参数中的一个?

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

Stack Overflow用户
提问于 2018-12-14 15:11:10
回答 1查看 12.4K关注 0票数 12

我使用的是OpenAPI 3,有两个查询参数,其中至少一个是必需的,但不管是哪个参数。

即,作为sudocode:

代码语言:javascript
运行
复制
if parameter_1 OR parameter_2:
    do stuff
else:
    error

这在OpenAPI 3中是可能的吗?据我所知,在规范中没有提到它,也没有在JSON模式规范中提到它。

EN

回答 1

Stack Overflow用户

发布于 2018-12-18 09:52:47

这个场景非常类似于互斥参数。基本上,您可以使用一个对象类型参数,其中parameter_1parameter_2是对象属性;这样的对象将是串行化,如?parameter_1=value1&parameter_2=value2。“至少一个”约束可以使用minPropertiesanyOf表示。

代码语言:javascript
运行
复制
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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53782328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档