Quarkus:提供多个 OpenApi/Swagger-UI 端点

Quarkus: Provide multiple OpenApi/Swagger-UI endpoints

我休息 api 版本 0 中的一些端点。我想用一个新的更通用的端点替换当前端点(版本 1,相同的路径,但不同的实现和不兼容的参数),但是需要保留旧的 运行 一段时间。

问题是:Quarkus 是否可以提供两个 OpenApi 定义和两个 Swagger UI 页面?

在我的项目中,我包含了 openapi 依赖项并让 Quarkus 生成 OpenApi 定义。是否可以将版本 0 的端点分组为一个定义,其余的为另一个定义?
我有一个设置,可以浏览到 example.com/v0/docs/ 或 example.com/v1/docs/。 在不同版本中启动两个 API 实例很容易,但我认为不更改端口是不可能的。我希望所有端点都可以在同一个端口上访问。
遗憾的是,我找不到 quarkus 那种情况的例子。

如果这不可能,那么在一个定义中包含 v0 和 v1 端点是否是一种好的做法?我觉得很奇怪。但也许这就是我。

如果我需要在一个完全不同的 swagger ui/ 文件中查找端点的新版本,我会觉得很奇怪。毕竟是一样的服务。

恕我直言,典型的方法是:

  1. 要么保持旧服务不变,运行它作为旧版本,运行新服务分开(并在某些时候关闭旧服务)
  2. 将它视为与某些遗留端点相同的服务,并将所有内容放在相同的规范中。如果您想单独对旧端点进行分组,您可以为此使用 swagger 标签。 https://swagger.io/docs/specification/grouping-operations-with-tags/

据我所知,答案是否定的。

Quarkus 降低了部署和操作的复杂性,但代价是您无法获得全功能应用程序服务器为您提供的所有自由(比如在不同 URL 下部署同一应用程序的两个版本s).

但是:既然Quarkus是"containers first",你应该可以在不同的容器中部署v0和v1,监听不同的端口但被合并到同一个URL 由 Apache 或 NGINX 等上游 Web 服务器构建。

在一个 Quarkus 应用程序中同时拥有两个版本似乎会带来很多麻烦,例如关于正确地对您的应用程序进行版本控制。