我试图通过Swagger UI记录内部公司消费,以及在供应商产品(WSO2 ESB)中开发的现有API服务。供应商产品不支持招摇。我计划以编程方式检查/处理我的API服务的源代码(在供应商产品中编写),并生成.json或.yml格式的swagger定义文件的目录/文件夹/库。没关系,我可以做到。
这些api defintion文件中的每一个都会在swagger UI中很好地呈现,我正在使用https://www.npmjs.com/package/swagger-ui。
我的问题是我最终会得到大约100个这些API定义文件,我想提供一些列出所有API的总体界面/页面,然后将用户带到Swagger UI,并在加载特定的API定义时加载用户单击其中一个链接。这相当于打开我的本地swagger-ui并在相关API定义的路径中手动键入/复制。如果我手动操作,这可以正常工作,我只是不希望用户必须手动执行此操作。他们如何知道API定义URL的存在以及为什么要手动输入/复制它们。
我无法看到如何将“apiDefintionToLoad”参数传递给Swagger-ui,我想我会找到一个或更改源来支持它。这是否存在?
有没有更好的解决方案,无论是自己开发还是使用现有的软件包或解决方案?我更喜欢基于节点的解决方案,java也没关系。
我是不是错了?
谢谢, 太
答案 0 :(得分:3)
使用基本的Swagger-ui工具可以非常轻松地完成您所需要的工作。
基本上你拥有的是许多swagger定义的列表。我猜你想让用户点击按钮或链接,或者从下拉列表中选择一个定义来选择要查看的API。完成后,您可以执行以下操作:
index.html
并在选择可以重新加载和重复使用单个swagger-ui容器。从第一步获取swagger定义的URL并将其提供给swagger-ui对象,通常这样做:
window.swaggerUi.updateSwaggerUi({url: 'http://your.spec.com/swagger.yaml'})
现在容器将使用您指定的规范重新加载。
答案 1 :(得分:3)
Swagger UI 3.0.19通过urls
参数原生支持多个规范。使用urls
时,顶部栏会显示一个下拉列表,而不是输入框。
<强>用法强>
修改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顶栏看起来像这样: