我在这里挖掘,试图找到一个解决方案,如何将几个OpenApi v3组件定义合并到一个文件中。
让我们设想一个情况:
1.您决定将OpenApi拆分为不同文件夹中的多个文件。(见下图)x1c 0d1x
1.现在您需要将所有的components.v1.yaml合并到一个模式中(我将其命名为blueprint.v1.yaml
),通常,我使用swagger-cli
来合并所有的$ref
依赖项,但现在不是这种情况,因为我无法引用整个组件/模式对象列表
1.并使用它构建一个OpenApi文件,其中所有字段都已填充:信息、组件、路径等,使用swagger-cli bundle
工具。
因此,问题是-如何重用blueprint.v1.yaml
文件中已经定义的组件块(称为components.v1.yaml的文件)?
另外,每个components.v1.yaml
看起来都像这样:
例如,location-create-single.v1.yaml
路径定义如下图所示。请注意,所有$ref
都引用components.v1.yaml
文件。
2条答案
按热度按时间wfveoks01#
我不认为有一个“原生”的OpenAPI解决方案来解决你的问题。People are discussing for a while about OpenAPI overlays/extends/merges。目前(2020-04-24)没有任何关于这个主题的共识。
尽管您可以实现自己的工具或使用现有工具来预处理
blueprint.v1.yaml
并生成 “合并的OAS”。9avjhtql2#
go-swagger
有一个mixin
命令,可以合并多个OpenAPI规范中的路径、定义等,并根据需要跳过重复的定义。