用于多个RESTFul服务的Swagger UI

时间:2014-04-25 15:05:11

标签: swagger swagger-ui

我阅读了以下here

  

Swagger目前不包含从客户端或服务器角度支持多个API版本的建议 - 版本信息(规范和底层API实现)都已声明。

我希望知道的是如何配置swagger UI以显示多个服务的API,即驻留在不同服务器上的服务。我尝试在另一台服务器上配置swagger UI,但是我收到以下错误:

  

无法从服务器读取。它可能没有适当的访问控制原点设置。

我已经阅读过关于在服务器上启用CORS的内容,但是在我的情况下,由于服务在自由配置文件上运行,因此无效。

Swagger UI在本地运行的WAS自由配置文件上配置,服务在不同的WAS实例上运行。

我正在移动的方向是拥有多个服务的UI,但我认为这是一个合乎逻辑的起点。

3 个答案:

答案 0 :(得分:5)

似乎Swagger 2规格很快就会允许这样做。看看这个似乎是贡献者的回复:

  

我们目前正在最终确定整理能力   几个微服务成一个集合,但最终,每个   微服务仍然只是一个文件。

https://stackoverflow.com/a/26917653/3389881

Swagger Google小组中的同一个人评论: https://groups.google.com/forum/#!topic/swagger-swaggersocket/H7dsSd6VPvM

这个人找到了一种方法,可以在同一个地方对多个Swagger 2定义进行分组: http://utility-stack.apievangelist.com/index.html

最后,似乎Swagger 1将支持多个API基本路径。

答案 1 :(得分:0)

查看DynamicApis.com

这是一个新的API门户平台,可以很好地完成这项工作。他们使用您的Swagger JSON并构建您的API门户。它们还具有本机REST API集成,您可以自动将API同步到门户网站。

Here是一个示例门户,他们必须展示如何托管多个API。

Here是他们的文档的样子。这就像招摇,但已经完成并占据了一席之地。

答案 2 :(得分:0)

我们在各种行业级API中看到的是版本直接进入路径,其中v1是可选的。

因此,如果您的V1具有“/ path / resource”,则可以将“/ v2 / path / resource”作为V2,并且两者都可以在Swagger的所有版本中共存。

您提到您正在使用WebSphere Liberty,因此这里有两个可能对您有帮助的要点:

  1. 从2016年1月的Beta版开始,WebSphere Liberty本身就支持CORS。您只需使用所需的CORS选项配置server.xml。文档在这里:https://www.ibm.com/support/knowledgecenter/was_beta_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/twlp_webcontainer_cors_config.html

    domain属性适用于您希望此配置应用于的应用程序根目录,这意味着它不会影响任何其他上下文根。其他7个属性完全遵循官方的CORS规范(https://www.w3.org/TR/cors/),因此它们非常自我解释。

    链接到测试版:https://developer.ibm.com/wasdev/downloads/liberty-profile-beta/

  2. 由于您使用的是Swagger和Liberty,因此您应该从Liberty查看新的API Discovery:https://developer.ibm.com/wasdev/blog/2016/02/17/exposing-liberty-rest-apis-swagger/

    基本上,你在server.xml中打开apiDiscovery-1.0,服务器将自动处理你的Jaxrs(1.1或2.0)注释,Swagger注释和预生成的文档(META-INF / swagger.json或META- INF / swagger.yaml)。然后,您将能够从/ ibm / api / docs和/ ibm / api / explorer中查看聚合文档。