Swagger 大摇大摆2.0-如何制作;“一个或另一个”;需要参数吗?

Swagger 大摇大摆2.0-如何制作;“一个或另一个”;需要参数吗?,swagger,Swagger,我在下面定义了一个swagger 2.0资源。如何使“param1或param2”成为必填项?调用方必须传递param1或param2 /some/res: put: summary: some resource responses: 200: description: Successful response schema: $ref: '#/definitions/SomeResponse' parameters: - nam

我在下面定义了一个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
OpenAPI(fka Swagger)规范不支持(任何类型的)条件参数或互斥参数

有一个打开的功能请求:

Swagger规范不支持有条件要求或包含/排除参数


我的建议是在描述中明确说明包含/排除查询参数的规则。然后使用一个验证框架,这取决于您的语言(即javax.validation for Java、restify validation for restify等),相应地验证参数。

在Swagger文档的参数依赖项部分:

Swagger不支持参数依赖关系和互斥参数。上有一个打开的功能请求


截至2017年6月,该问题获得了21次投票,成为该项目中第三个投票最多的问题。

该问题中的具体场景——带有包含
param1
param2
的表单数据体的POST/PUT/PATCH请求——可以使用OpenAPI 3.0和
oneOf
进行定义:

openapi:3.0.0
...
路径:
/一些/关于:
付诸表决:
请求主体:
必填项:true
内容:
应用程序/x-www-form-urlencoded:
模式:
其中一项:
-类型:对象
特性:
参数1:
类型:字符串
必修的:
-参数1
附加属性:false
-类型:对象
特性:
参数2:
类型:字符串
必修的:
-参数2
附加属性:false

对于大摇大摆的UI用户,请注意:OpenAPI 3.0定义的
oneOf
模式的表单数据UI和示例呈现尚未完成。

相关(或重复):对查询参数而不是主体模式使用
oneOf
如何?我想这仍然不受支持?@hris.to我不确定,很难说没有看到实际的规范。如果在Swagger UI中有些东西不起作用,我建议您在这里提交一个问题: