我使用的是OpenAPI 3,有两个查询参数,其中至少一个是必需的,但不管是哪个参数。
即,作为sudocode:
if parameter_1 OR parameter_2:
do stuff
else:
error
这在OpenAPI 3中是可能的吗?据我所知,在规范中没有提到它,也没有在JSON模式规范中提到它。
发布于 2018-12-18 09:52:47
这个场景非常类似于互斥参数。基本上,您可以使用一个对象类型参数,其中parameter_1
和parameter_2
是对象属性;这样的对象将是串行化,如?parameter_1=value1¶meter_2=value2
。“至少一个”约束可以使用minProperties
或anyOf
表示。
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://stackoverflow.com/questions/53782328
复制相似问题