gpt4 book ai didi

java - Resteasy JAX-RS方法中获取请求

转载 作者:行者123 更新时间:2023-11-30 03:57:05 24 4
gpt4 key购买 nike

我有一个使用 Resteasy 运行的 Jax-Rs 服务,并且在实现我想要访问请求数据的方法时。我知道 @Context 的存在注释,但这需要我修改使用相同接口(interface)创建客户端代理的服务接口(interface),这是不切实际的(甚至对于 Java Jax-Rs 客户端来说也是不可能的)。

因此,为了使其更清晰,我有这个无法修改的界面。

@POST
@Path("/ping")
@Consumes({ javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML })
@Produces({ javax.ws.rs.core.MediaType.APPLICATION_JSON, javax.ws.rs.core.MediaType.APPLICATION_XML })
public String ping();

在实现中我想做这样的事情(一种伪代码)

@Override
public String ping() {
String client = SomeContextAccessor.getRequest().getRemoteAddress());

//Use the request info

return "a nice string";
}

我知道有些类具有静态方法,允许我执行此操作,但找不到有关这些方法的信息。

最佳答案

解决方案是一行:

ResteasyProviderFactory.getContextData(HttpServletRequest.class)

我不知道是否可以将其注入(inject)到字段中。方法级注入(inject)也不起作用,因为我使用具有相同接口(interface)定义的 Java 客户端。向方法添加上下文参数会搞砸这个方案。

无论如何,它对我来说非常有用。

关于java - Resteasy JAX-RS方法中获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22892223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com