我阅读了以下here:
Swagger目前不包含从客户端或服务器角度支持多个API版本的建议 - 版本信息(规范和底层API实现)都已声明。
我希望知道的是如何配置swagger UI以显示多个服务的API,即驻留在不同服务器上的服务。我尝试在另一台服务器上配置swagger UI,但是我收到以下错误:
无法从服务器读取。它可能没有适当的访问控制原点设置。
我已经阅读过关于在服务器上启用CORS的内容,但是在我的情况下,由于服务在自由配置文件上运行,因此无效。
Swagger UI在本地运行的WAS自由配置文件上配置,服务在不同的WAS实例上运行。
我正在移动的方向是拥有多个服务的UI,但我认为这是一个合乎逻辑的起点。
答案 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)
这是一个新的API门户平台,可以很好地完成这项工作。他们使用您的Swagger JSON并构建您的API门户。它们还具有本机REST API集成,您可以自动将API同步到门户网站。
Here是一个示例门户,他们必须展示如何托管多个API。
Here是他们的文档的样子。这就像招摇,但已经完成并占据了一席之地。
答案 2 :(得分:0)
我们在各种行业级API中看到的是版本直接进入路径,其中v1是可选的。
因此,如果您的V1具有“/ path / resource”,则可以将“/ v2 / path / resource”作为V2,并且两者都可以在Swagger的所有版本中共存。
您提到您正在使用WebSphere Liberty,因此这里有两个可能对您有帮助的要点:
从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/
由于您使用的是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中查看聚合文档。