Swagger合并多个规范

时间:2020-11-10 15:46:41

标签: python swagger swagger-2.0

我有各种独立模块生成的多种规格; 1个这样的规范的样本:

{
  "swagger": "2.0",
  "tags": [
      {
        "name": "Tag1"
      },
      {
        "name": "Tag2"
      },
      {
        "name": "Tag3"
      }
  ],
  "paths": {
      "/api/v1/entities/{entityId}/status": {
          "post": {
              "tags": [
              ],
              .
              .
              .
            }
          "get": {
              "tags": [
                "Tag1",
                "Tag3"
              ],
              .
              .
              .
            }
  },
  "/api/v1/entities": {
        "post": {
          "tags": [
            "Tag2",
            "Tag3"
          ]
          .
          .
          .
       }
   }
}

每个单独的json文件都包含所有reqd引用。有什么方法可以将它们组合为一个规范(json文件)?

2 个答案:

答案 0 :(得分:0)

我可以想象出这样做的多种动机,例如,提供一个单一的招摇即可导入AWS API Gateway。可能有一些合并JSON的现成功能(例如https://pypi.org/project/jsonmerge/),但是最好的选择是自己实现。您可能会发现需要对每个swagger文件中的模型进行“命名空间”以避免冲突。例如,如果file1.json和file2.json各自具有“事物”模型,则它们可能不一致,并且在合并的选项中,定义和用法应合并为“ file1_thing”和“ file2_thing”。否则,您还可以检查模型的一致性,避免不必要的命名空间。

答案 1 :(得分:0)

这看起来像一个JSON到JSON转换的用例,因此也许您可以使用基于Java的Jolt转换库。他们在演示链接上也有很好的示例:https://jolt-demo.appspot.com/#inception。这是文档链接:https://github.com/bazaarvoice/jolt