我使用的是OpenAPI 3,它有两个查询参数,至少需要一个 ,但这无关紧要。
即,作为sudocode:
if parameter_1 OR parameter_2:
do stuff
else:
error
在OpenAPI 3中有可能吗?据我所知,在规范中或JSON Schema规范中都没有提及它。
答案 0 :(得分:0)
这种情况与mutually exclusive parameters非常相似。基本上,您可以使用对象类型参数,其中parameter_1
和parameter_2
是对象属性。这样的对象将以?parameter_1=value1¶meter_2=value2
的形式serialized。可以使用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]