当前位置: 首页 > 面试题库 >

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

劳和歌
2023-03-14
问题内容

我正在尝试通过Swagger UI记录供公司内部使用的,由供应商产品(WSO2
ESB)开发的现有API服务。供应商产品不支持摇摇欲坠。我计划以编程方式检查/处理我的API服务的源代码(用卖方产品编写),并生成.json或.yml格式的swagger定义文件的目录/文件夹/库。很好,我可以做到。

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

我的问题是,我最终将获得大约100个这些API定义文件,我想提供一些概述界面/页面,其中列出了所有API,然后将用户带到Swagger
UI,并在用户单击时加载了特定的API定义在链接之一上。这等效于打开我的本地swagger-
ui并在相关API定义的路径中手动键入/复制。如果我手动执行此操作,则效果很好,只是我不希望用户手动执行此操作。他们将如何知道存在哪些API定义网址,以及为什么要手动键入/复制它们。

我看不到如何将“ apiDefintionToLoad”参数传递给Swagger-ui,我想我要么找到一个参数,要么更改源代码以支持该参数。是否存在?

是否有更好的解决方案,无论是自己发展还是使用现有的软件包或解决方案?我更喜欢基于节点的解决方案,java也可以。

我要错了吗?

谢谢,马特。


问题答案:

您所寻找的内容可以通过基本的Swagger-ui工具轻松完成。

本质上,您拥有的是许多摇摇欲坠的定义的列表。我猜您想让用户单击按钮或链接,或者从下拉菜单中选择定义以选择要查看的API。完成后,您可以执行以下操作:

  • 让用户选择要显示的API定义。您可以通过向其中添加HTML元素index.html并在选择后触发一些javascript 来轻松实现
  • 单个swagger-ui容器可以重新加载和重用。从第一步获取到swagger定义的URL,并将其提供给swagger-ui对象,通常是这样完成的:

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

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



 类似资料:
  • 我试图通过Swagger UI记录在供应商产品(WSO2 ESB)中开发的现有API服务,以供公司内部使用。供应商产品不支持招摇过市。我计划以编程方式检查/处理API服务的源代码(编写在供应商产品中),并在中生成一个包含swagger定义文件的目录/文件夹/库。json或。yml格式。那很好,我能做到。 这些api定义文件中的每一个都将在swagger UI中很好地呈现,我正在考虑使用https:

  • 如何为一个包含两个(或更多)python包的项目定义和组织gRPC原型文件? 假设我有以下monorepo结构: 我想使用gRPC将这两个服务连接在一起。我可以添加一个目录,其中包含适当的子目录,如下所示: 这是可行的:我可以生成。py文件正确,具有正确的导入语句。这种方法的问题是,我必须复制我的客户机中的所有内容。proto进入my\u服务器。协议。如果需要进行更改,则必须在两个文件中都进行更改

  • RE:Angular2 2.0.0,Angulal-CLI v1.0.0-beta.11-WebPack.8 在ToC中,有一个要点“向构建中添加额外的文件”,但似乎该部分并不存在。

  • 最近我一直在写插件,然后使用ServiceLoader加载。为了让ServiceLoader找到我的插件,必须在META-INF/services/下的jar中包含一个文本文件。文本文件必须以ServiceLoader正在“寻找”的接口命名,并且必须包含实现类的规范名称。所有这些都工作得非常好,但是这种方法有一个非常烦人的问题:每次构建项目时,我都必须手动将 /services/文件夹以及文本文件

  • 我使用swagger生成类在Java和类型脚本。我有问题定义映射属性与对象列表为值。我试图定义如下: 上面的yml定义在java中生成以下代码: 如何配置yml以生成包含数据列表的密钥?类似于下面的类: 或 这是否可能与大摇大摆2.0?我正在考虑定义另一个扩展ArrayList的DataList类,然后将该类用作映射的值。 --------------更新 谢谢@nickb 我使用swagger-

  • 问题内容: 在PHP中可以包含脚本目录吗? 即代替: 是否有类似的东西: 似乎找不到找到针对特定类的大约10个子类的集合的好方法。 问题答案: