我知道过滤器用于处理请求,并且可以使用 http 标头和 httpmethods 执行操作,但我很困惑
有什么区别ClientRequestFilter
and ContainerRequestFilter
?
什么场景下我们必须使用ClientRequestFilter
and ContainerRequestFilter
?
我尝试过这个网站 https://jersey.java.net/documentation/latest/filters-and-interceptors.html#d0e6547但没有任何关于此的细节。
请帮助我理解这一点。
REST 交互有两个方面:客户端和服务器。 Jersey/JAX-RS-2 有客户端 API 和“主”服务器端 API。当使用客户端 API 时,我们可以使用ClientRequestFilter
,当使用服务器端 API 时,我们将使用ContainerRequestFilter
。不可能混合和匹配这些,它们应该严格地与交互的适当方面一起使用。
A ContainerRequestFilter
(服务器端)示例是进行一些授权/身份验证,这是服务器端过滤器的一个非常常见的用例。过滤器将在到达您的任何资源之前被调用
Client ---> Internet ---> Server ---> Filter ---> Resource
A ClientRequestFilter
(客户端)示例将实现一些客户端缓存(有点模拟浏览器缓存)。或者一个案例(已经实现)是一个过滤器,用于对 BASIC 身份验证的用户名和密码进行编码。在请求实际发送到服务器之前,将调用客户端过滤器。
Client ---> Filter ---> Internet ---> Server ---> Resource
还有XxxResponseFilters
遵循以下流程
Resource ---> ContainerResponseFilter ---> Server ---> Internet ---> Client
Server ---> Internet ---> ClientResponseFilter ---> Client
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)