OpenAPI 3.0 - 有条件的嵌套对象

OpenAPI 3.0 - conditionally nested objects

我有一个 API 我正在尝试使用 OpenAPI 3.0 进行记录,然后我将使用 Redoc

查看它

在这个API中,端点可以包含对象,这些对象可以有条件地包含其他对象,等等。

例如:对象 A 可以包含对象 B,对象 B 可以包含对象 C。在端点 1 上,对象 A 包含对象 B,对象 B 包含对象 C。但是,在端点 2 上。对象 B 确实不包含对象 C

我正在尝试尽可能以最 DRY 的方式构建我的组件,但在基于每个路径组装对象架构层次结构方面,我也具有完全的灵活性。

是否可以使用 OpenAPI 以 DRY 方式完成此操作?

readOnlywriteOnly 关键字可让您将特定属性标记为仅包含在响应中或仅包含在请求中,discriminator 可让您根据具体 属性。但是无法根据使用架构的 path/operation 来改变嵌套架构。

最简单的解决方案是将包含对象 C 的对象 B 的 属性 定义为可选 属性,并在 description 中口头记录使用细节(属性描述、架构描述或操作描述)。