如何在jersey 2中的postfilter中修改查询参数

nfg76nw0  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(192)

我正在尝试修改匹配后筛选器中的查询参数。我不能在预匹配过滤器中这样做,因为过滤器逻辑依赖于资源类和方法注解。我用的是泽西2.x和Spring Boot。
我无法通过调用 setRequestUri 因为它只允许在预匹配过滤器(参考)中使用。
我不想设置属性,因为这需要更改所有现有服务以从属性中读取。如果没有其他选项可用,我可能需要使用属性方法。
通过调用 ResourceConfig#register(cls, priority) filter类实现 ContainerRequestFilter .

public class MyFilter implements ContainerRequestFilter {
    @Override
    public void filter(final ContainerRequestContext requestContext) {
        // modifiedUri is the uri with modified query params
        // requestContext.setRequestUri(modifiedUri) ==> Throws IllegalStateException - "Method could be called only in pre-matching request filter."
    }
}

我尝试在网上搜索,找到了设置请求属性的解决方案。我找到了另一个建议创建 Package 器的解决方案( HttpServletRequestWrapper ). 但是在上面的过滤器中,我没有访问 filterChain . 因为过滤器需要访问资源类和资源方法注解,所以我认为我需要使用jersey过滤器,而不能使用servlet过滤器(reference)。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题