【问题标题】:OpenAPI 3.0 - conditionally nested objectsOpenAPI 3.0 - 有条件的嵌套对象
【发布时间】:2018-04-22 17:05:08
【问题描述】:

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

在此 API 中,端点可以包含对象,这些对象可以有条件地包含其他对象,依此类推。

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

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

是否可以使用 OpenAPI 以 DRY 方式完成此任务?

【问题讨论】:

  • 顺便说一句,这是一个很好的问题,我建议您也可以在 OpenAPI Specification repository 中提问。
  • @Helen 谢谢!我刚刚也在那里发布了问题

标签: swagger openapi


【解决方案1】:

readOnlywriteOnly 关键字可让您将特定属性标记为仅包含在响应中或仅包含在请求中,discriminator 可让您根据特定属性的值改变整个架构。但是没有办法根据使用模式的路径/操作来改变嵌套模式。

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

【讨论】:

  • 感谢您的意见!我想我可能需要包含一些书面指导,但这也让我怀疑这是否是一个 api 气味。
  • 不幸的是,我从未在 OpenAPI github 上收到回复,但我确实有一个后续问题:如果我为每个单独的对象定义了架构组件,我可以在每个端点的基础上将嵌套拼凑在一起吗? IE。 via$refs,说响应包含objectA,objectA本身包含object B&C,C包含D等
猜你喜欢
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2017-04-08
  • 2021-10-13
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多