如何为包含许多Swagger定义.json / .yml文件的目录组织/构build一个Swagger UI界面

我试图通过Swagger UI来logging供应商产品(WSO2 ESB)中开发的现有API服务的内部公司消耗。 供应商产品不支持招摇。 我计划以编程方式检查/处理我的API服务(写在供应商产品中)的源代码,并生成.json或.yml格式的swagger定义文件的目录/文件夹/库。 这很好,我可以做到这一点。

这些api定义文件中的每一个都将在swagger UI中很好地呈现,我正在使用https://www.npmjs.com/package/swagger-ui 。

我的问题是我最终会有大约100个这样的API定义文件,我想提供一些全面的界面/页面,其中列出了所有的API,然后将用户带到用户点击时加载的特定API定义的Swagger UI在其中一个链接上。 这相当于打开我本地的swagger-ui,并在相关API定义的path中手动input/复制。 这工作正常,如果我手动做,我只是不希望用户必须手动执行此操作。 他们如何知道API定义url的存在以及为什么要手动input/复制它们。

我看不到如何将“apiDefintionToLoad”parameter passing给Swagger-ui,我想我会find一个或更改来源支持。 这是否存在?

有没有更好的解决scheme,要么开发自己,要么使用现有的软件包或解决scheme? 我更喜欢基于节点的解决scheme,Java也行。

我是否在这个错误?

谢谢,Matt。

使用基本的Swagger-ui工具可以非常容易地完成要查找的内容。

基本上你所拥有的是许多swagger定义的列表。 我猜你想让用户点击一个button或链接,或者从下拉菜单中select一个定义来select要查看的API。 一旦完成,您可以执行以下操作:

  • 让用户select一个API定义来显示。 您可以轻松地从添加HTML元素到您的index.html和select后触发一些JavaScript
  • 一个单独的swagger-ui容器可以重新加载和重用。 从第一步获取网页的swagger定义,并将其提供给swagger-ui对象,通常这样做:

    window.swaggerUi.updateSwaggerUi({url: 'http://your.spec.com/swagger.yaml'})

现在容器将重新加载您指定的规格。

Swagger UI 3.0.19通过urls参数本地支持多个规格。 使用urls ,顶部栏会显示规格的下拉列表,而不是input框。

用法

编辑dist\index.html并更改

 url: "http://petstore.swagger.io/v2/swagger.json", 

 urls: [ {name: "petstore", url: "http://petstore.swagger.io/v2/swagger.json"}, {name: "instagram", url: "https://api.apis.guru/v2/specs/instagram.com/1.0.0/swagger.yaml"} ], "urls.primaryName": "petstore", // default spec 

现在,您的Swagger UI顶部栏如下所示:

与规格选择器的Swagger UI顶部酒吧