首页 > 解决方案 > 如何合并多个 OpenAPI 规范?

问题描述

我在这里挖掘试图找到一个解决方案,如何在一个文件中合并几个 OpenApi v3 组件定义。

让我们想象一个情况:

  1. 您决定将 OpenApi 拆分为不同文件夹中的多个文件。(见下图)项目结构
  2. 现在您需要将所有 components.v1.yaml 组合成一个模式(我将其命名为blueprint.v1.yaml)。通常,我使用swagger-cli合并所有$ref依赖项,但现在不是这种情况,因为我无法引用整个组件/模式对象列表 blueprint.v1.yaml 内容
  3. 并使用它构建一个包含所有字段的单个 OpenApi 文件:信息、组件、路径等swagger-cli bundle

所以,问题是 - 如何在我的文件中重用已经定义的组件块(称为 components.v1.yaml 的blueprint.v1.yaml文件)?

PS 每个components.v1.yaml看起来像这样: components.v1.yaml 内容

例如,location-create-single.v1.yaml路径定义如下图所示。提一下,这都是$refcomponents.v1.yaml文件。 在此处输入图像描述

标签: swaggeropenapiswagger-codegenopenapi-generator

解决方案


我认为您的问题没有“本机”OpenAPI 解决方案。人们讨论了一段时间关于 OpenAPI 覆盖/扩展/合并。目前(2020-04-24)没有关于这个话题的任何共识。

尽管您可以实现自己的工具或使用现有的工具来预处理blueprint.v1.yaml并生成“合并的 OAS”


推荐阅读