4.8. REST 端点路径解析的变化


警告

当您将应用程序从 Quarkus 1.7 升级到 Red Hat build of Quarkus 1.11 时,这个更改可能会破坏应用程序中的 REST 端点。确保迁移应用程序后更新端点路径。

在红帽构建的 Quarkus 1.11 中,应用程序和非应用程序的 REST 端点的路径会根据常见的绝对路径解析。REST 端点的默认通用根路径设置为:

  • 用于直接由应用程序的主 REST 控制器类公开的 REST 端点的 /。您可以通过更改项目的 application.properties 文件中的 quarkus.http.root-path 属性的值来更改应用程序端点的默认路径。
  • 用于与应用程序集成的工具提供的服务的 REST 端点(如应用程序健康监控或指标集合)。您可以通过更改项目的 application.properties 文件中的 quarkus.http.non-application-root-path 属性的值来更改应用程序端点的默认路径。

请注意,相对根路径嵌套在 quarkus.http.root-path 属性定义的根路径下。这意味着,如果 quarkus.http.root-path 属性中定义的根路径被设置为 /,非应用程序端点的绝对路径为 / q /<non-application-endpoint-name& gt;。

但是,您还可以将单个非应用程序端点的路径明确配置为位于 /q/<non-application-endpoint-name>

因为端点路径解释为相对于 quarkus.http.root-pathquarkus.http.non-application-root-path 设置的根路径,所以您必须排除您为应用程序中端点配置的前导斜杠(/)字符。

例如,当您在 REST 控制器中为 Prometheus 公开指标端点时,您必须将 @Path 注解中的端点路径设置为 metrics,以确保您的端点通过 /q/metrics 公开。将相同的路径值设置为 /metrics 会在 /metrics 中公开您的指标端点。

在单独的命名空间中配置非应用程序端点的示例

例如,您可以在项目的 application.properties 文件中设置以下属性,以在 /api 根路径上公开 hello 端点应用程序,以及 /api/q 路径的指标端点:

application.properties

quarkus.http.root-path=/api
quarkus.http.non-application-root-path=q

在此配置中,/api/hello/api/q/metrics 都是 public。这意味着,任何有权访问 /api/hello 的用户也可以向 /api/q/metrics 端点发送请求并接收有效的响应。

当您要使 健康 端点非公共端点时,您可以将 application.properties 中的非应用程序端点的根路径设置为 /q 命名空间:

application.properties

quarkus.http.root-path=/api
quarkus.http.non-application-root-path=/q

在此配置中,/api/hello 端点是公共的,但 /q/metrics 在单独的命名空间中公开,您可为其配置不同的访问权限。

在红帽构建的 Quarkus 1.11 中,发送到原始非应用程序端点路径的请求会自动重定向到 /q 命名空间中的新路径。

您可以在项目的 application.properties 文件中设置以下属性,以禁用非应用程序端点路径的自动重定向:

quarkus.http.redirect-to-non-application-root-path=false

您可以通过将 quarkus.http.non-application-root-path 的值设置为解析为解析为绝对应用程序端点根值的变量,将应用程序切换到所有端点的绝对端点根路径:

quarkus.http.non-application-root-path=${quarkus.http.root-path}
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部