You need to enable JavaScript to run this app. Quarkus 1.13+RESTEasy环境下如何获取当前请求的URI?
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus 1.13+RESTEasy环境下如何获取当前请求的URI?

解决方案

在Quarkus 1.13 + RESTEasy 环境下,你可以通过JAX-RS标准的@Context注解注入UriInfo对象直接获取当前请求的完整URI,这是最推荐的实现方式:

代码修改示例

import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;

@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("/api/v1/webooks/mandrill")
public class MandrillWebhookResource {

    // code skipped for brevity

    @POST
    public Response mandrill(
            // 注入UriInfo对象
            @Context UriInfo uriInfo,
            @HeaderParam("x-mandrill-signature") String mandrillSignature,
            @FormParam("mandrill_events") String mandrillEvents
    ) throws JsonProcessingException {
        // 获取完整请求URI
        String requestUri = uriInfo.getRequestUri().toString();
        final var mandrillSignatureValid = mandrillSignatureValidator
          .valid(requestUri, mandrillSignature, mandrillEvents);

        // code skipped for brevity

        return Response.ok().build();
    }
}

注意事项

  • 如果你的服务部署在Nginx等反向代理之后,需要在application.properties中添加配置quarkus.http.proxy.enable=true,才能正确获取到外部用户请求的原始URI,而非服务内部监听的地址
  • 除了UriInfo之外你也可以注入HttpServletRequest对象,调用getRequestURL().toString()获取URI,不过前者是JAX-RS规范定义的标准接口,适配性更强

内容的提问来源于stack exchange,提问作者Michał Zalewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 19:45:04