如何合并多个OpenAPI规范?

时间:2020-04-17 01:09:49

标签: swagger openapi swagger-codegen openapi-generator

我在这里一直在寻找解决方案,即如何在一个文件中合并几个OpenApi v3组件定义。

让我们想象一个情况:

  1. 您决定将OpenApi拆分为不同文件夹中的多个文件。 (请参见下图)project structure
  2. 现在,您需要将所有components.v1.yaml组合到一个架构中(我将其命名为gradle-plugins)。 通常,我使用blueprint.v1.yaml合并所有swagger-cli依赖项,但是现在不是这种情况,因为我无法引用整个组件/方案对象列表 blueprint.v1.yaml content
  3. 并使用它来构建一个OpenApi文件,并使用$ref工具填充所有字段:信息,组件,路径等。

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

P.S。每个blueprint.v1.yaml如下所示: components.v1.yaml content

例如,下图显示了components.v1.yaml路径定义。提及所有location-create-single.v1.yaml都引用了$ref个文件。 enter image description here

1 个答案:

答案 0 :(得分:4)

我认为您的问题不存在“本机” OpenAPI解决方案。 People are discussing for a while about OpenAPI overlays/extends/merges。当前(2020-04-24)对此主题尚未达成共识。

尽管您可以实现自己的工具or use an existing one来预处理blueprint.v1.yaml并生成“合并的OAS”