如何合并多个OpenAPI规范?

P. *_*rov 14 swagger openapi swagger-codegen openapi-generator

我正在努力寻找一种解决方案,如何将多个 OpenApi v3 组件定义合并到一个文件中。

让我们想象一个情况:

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

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

PS 每个components.v1.yaml看起来都是这样的: Components.v1.yaml内容

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

Rap*_*aer 9

我认为没有“本地”OpenAPI 解决方案可以解决您的问题。人们正在讨论 OpenAPI 覆盖/扩展/合并 一段时间。目前(2020-04-24)对此主题尚未达成共识。

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