我有一个rest api,在版本0中有一些终结点。我想用一个新的更通用的终结点(版本1,相同的路径,但是不同的实现和不兼容的参数)替换当前的终结点,但是需要保留旧的终结点跑一会儿。
问题是:Quarkus是否可以提供两个OpenApi定义和两个Swagger UI页面?
在我的项目中,我包含了openapi依赖项,并让Quarkus生成了OpenApi定义。是否可以将一个定义的版本0的端点归为一组,而将另一个定义的端点归为一组?
我想到了一个设置,可以在其中浏览到example.com/v0/docs/或example.com/v1/docs/。
在不同版本中启动两个API实例很容易,但是我认为不更改端口是不可能的。我希望所有端点都可以在同一端口上访问。
可悲的是,我找不到使用quarkus的示例。
如果这不可能,将v0和v1端点包含在一个定义中是否是一个好习惯?在我看来很奇怪。但是也许就是我。
答案 0 :(得分:1)
据我所知,答案是否定的。
Quarkus降低了部署和操作的复杂性,但是代价是您无法获得功能齐全的应用程序服务器提供的所有自由(例如,使用不同的URL部署同一应用程序的两个版本)。
但是:由于Quarkus是“容器优先”的容器,因此您应该能够将v0和v1部署在不同的容器中,侦听不同的端口,但是上游Web服务器会将其合并到相同的URL结构中像Apache或NGINX。
在一个Quarkus应用程序中同时使用两个版本似乎会引起很多麻烦,例如关于正确对应用程序进行版本控制。
答案 1 :(得分:0)
如果我需要在完全不同的swagger ui /文件中查找端点的新版本,我会觉得很奇怪。毕竟是同一服务。
恕我直言,典型的方法是: