当前位置: 首页 > 知识库问答 >
问题:

Swagger 2.0-如何使“一个或另一个”参数成为必需参数?

陆安国
2023-03-14

我在下面定义了一个swagger 2.0资源。如何使“param1或param2”成为必填项?调用方必须传递param1或param2。

/some/res:
put:
  summary: some resource
  responses:
    200:
      description: Successful response
      schema:
        $ref: '#/definitions/SomeResponse'
  parameters:
    - name: param1
      type: string
      description: param1
      in: formData
      required: false
    - name: param2
      type: string
      description: param2
      in: formData
      required: false

共有3个答案

西门洛城
2023-03-14

在描述参数招摇过市文档的参数依赖项部分:

Swagger不支持参数依赖关系和互斥参数。https://github.com/OAI/OpenAPI-Specification/issues/256.有开放功能请求

截至2017年6月,该问题获得了21张赞成票,成为该项目中第三大赞成票问题。

井嘉胜
2023-03-14

这个问题中的特定场景-一个POST/PUT/PATCH请求,其中包含一个表单数据主体,该表单数据主体包含参数1参数2-可以使用OpenAPI 3.0和oneOf来定义:

openapi: 3.0.0
...

paths:
  /some/res:
    put:
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              oneOf:
                - type: object
                  properties:
                    param1:
                      type: string
                  required:
                    - param1
                  additionalProperties: false
                - type: object
                  properties:
                    param2:
                      type: string
                  required:
                    - param2
                  additionalProperties: false

请注意,Swagger UI用户:窗体数据UI和oneOf模式的示例渲染还不适用于OpenAPI 3.0定义。

柳灿
2023-03-14

OpenAPI(fka Swagger)规范不支持条件参数或互斥参数(任何类型)。

有一个开放的功能请求:
支持查询参数之间的相互依赖关系

 类似资料:
  • 问题内容: 我们使用“从Java开始”方法来使用Metro 1.5堆栈创建JAX-WS 2.0 Web服务。当我们将诸如SoapUI的标准工具指向我们的一个Web服务时,它表明WebMethods的参数是可选的。生成的xsd显示minOccurs = 0。 我需要一种方法来使“从Java出发”方法中需要WebMethod参数(也许在xsd中为minOccurs = 1)。我认为这有一个Java注释

  • 例如,我想要: 如果用户已指定增量,请使用它。如果不是,请使用依赖于 n 的值。这可能吗?

  • 我有一个管道,我刚刚添加了2个参数来构建发布或调试(参数称为发布或调试)。管道使用cron语法每10分钟检查一次SCM中的更改,管道检查每次提交,然后构建发布(C程序),但我想每天构建调试一次,比如说每天从12到13的每个提交都将在调试中构建。所有这些都不需要我运行管道和手动更改参数(默认设置为release)。有什么办法可以做到这一点?这是管道的一个非常简短的版本:

  • 问题内容: 我正在开发一个游戏作为附带项目,很有趣,但是遇到了这个错误,我真的不知道为什么会发生… 这是代码: 我这样称呼它: 我得到的错误是: 有任何想法吗? 问题答案: 您不应直接调用类方法,而应创建该类的实例: 要详细说明该错误,您将得到: TypeError:turn()缺少1个必需的位置参数:“ playerImages” 这是因为需要第一个参数()的实例。类方法总是将实例作为第一个参数

  • 我试图学习功能性Kotlin,并编写了以下测试代码: 在REPL中,我可以成功调用“findBorrowerX”: 但是我如何拨打“findBorrowerX2”的电话: 并将迭代的借用器x传递给getName?? 这看起来有关联,但我不确定: Kotlin:如何将一个函数作为参数传递给另一个? 提前感谢您对此的帮助! 编辑: 下面是我想做的等效Scala代码: 也许这在科特林是不可能的?

  • 这可能是一个奇怪的问题,但我很好奇是否有可能在需要某个属性的地方创建一个接口。 所以,举个例子… 在上面的例子中,我希望确保< code>text或< code>attachment存在。 这就是我现在的做法。认为它有点冗长(为松弛键入僵尸工具包)。