Jersey:将值从 ContainerRequestFilter 传递到端点
Posted
技术标签:
【中文标题】Jersey:将值从 ContainerRequestFilter 传递到端点【英文标题】:Jersey: Pass value from ContainerRequestFilter to endpoint 【发布时间】:2014-08-12 13:18:25 【问题描述】:我正在使用 Jersey 2.9,并且我创建了一个过滤器,它将获取一个加密的标头值,并对其进行解密,然后将其传递给被调用的端点。我不知道如何做到这一点,我一直在互联网上搜索,但没有真正找到我想做的具体例子。过滤器被调用,我只是在将值从它传递到端点时遇到问题。
你们能帮帮我吗!
这里是一些示例代码:
public class MyFilter implements ContainerRequestFilter
@Override
public void filter(ContainerRequestContext requestContext) throws WebApplicationException
String EncryptedString = requestContext.getHeaderString("Authentication");
/* Doing some methods to remove encryption */
/* Get a string which I want to pass to the endpoint which was called on, in this example: localhost:4883/rest/test */
@Path("rest")
public class restTest
@Path("test")
@GET
@Produces(MediaType.APPLICATION_JSON)
public String Testing()
/* Process the value from the MyFilter */
【问题讨论】:
How can you pass data from a Filter to the endpoint in Jersey的可能重复 我也看过那个线程,但是作为一个Java新手我不知道如何实现它,如果有人可以提供我上面示例中的一段代码,我将非常感激。 由于这个问题比链接的问题更具体关于 Header-Manipulation 我添加了一个答案。 【参考方案1】:您可以轻松修改标题或添加另一个:
@Override
public void filter(ContainerRequestContext requestContext) throws IOException
requestContext.getHeaders().add("X-Authentication-decrypted", decryptedValue);
这个值可以注入到你的资源方法中:
@GET
@Produces(MediaType.APPLICATION_JSON)
public String Testing(@HeaderParam("X-Authentication-decrypted") String auth)
【讨论】:
啊,这完全符合我的要求。这似乎是一个非常简单的解决方案,我不知道它可以这样修复。谢谢!以上是关于Jersey:将值从 ContainerRequestFilter 传递到端点的主要内容,如果未能解决你的问题,请参考以下文章
将值从presentingViewController 传回presentingViewController
通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图