在 Swagger Open API 3.0 中使用另一个参数时如何指示有条件地需要一个参数

Joh*_*zio 26 swagger openapi

我已经创建了一个 RESTful API,现在正在为该 API 的使用定义 Open API 3.0 JSON 表示形式。

当存在另一个参数时,我需要有条件地使用一个参数。所以我不能真正使用required: trueorrequired: false因为它需要有条件。我是否应该将其定义为required: false,然后在summary和/或 中description说在使用其他参数时需要它?或者有没有办法定义参数之间的依赖关系?我在规格中没有发现任何提及此类案例的内容。

小智 13

来自文档:

参数依赖性

OpenAPI 3.0不支持参数依赖和互斥参数。github.com/OAI/OpenAPI-Specification/issues/256上有一个开放的功能请求。您可以做的就是在参数描述中记录限制并在 400 Bad Request 响应中定义逻辑。


小智 8

请参阅https://community.smartbear.com/t5/Swagger-Open-Source-Tools/Defining-conditional-attributes-in-OpenAPI/td-p/222410,您可以在所需字段列表周围使用anyOf

anyOf:
       - required: [longitude, latitude]
       - required: [postalCode, countryCode]
       - required: [city, state, countryCode]
Run Code Online (Sandbox Code Playgroud)