Clientrequestfilter vs Containerrequestfilter

2022-09-04 19:18:48

我知道过滤器用于处理请求,并且可以使用http标头和httpmethods来做事,但是我感到困惑

客户端请求过滤器和容器请求过滤器之间有什么区别?在哪个场景中,我们必须使用客户端请求过滤器和容器请求过滤器?

我尝试了这个网站,但没有关于这个的任何细节。

请帮助我理解这一点。


答案 1

REST 交互有两个方面,即客户端和服务器。Jersey/JAX-RS-2 既有客户端 API,也有“主”服务器端 API。使用客户端 API 时,我们可以使用 ,而在使用服务器端 API 时,我们将使用 .不可能混合和匹配这些,它们应该严格地与交互的适当方面一起使用。ClientRequestFilterContainerRequestFilter

一个(服务器端)的例子是做一些授权/身份验证,这是服务器端过滤器的一个非常常见的用例。在到达您的任何资源之前,将调用过滤器ContainerRequestFilter

Client --->  Internet ---> Server ---> Filter ---> Resource

一个(客户端)示例是实现一些客户端缓存(某种程度上模拟浏览器缓存)。或者,一个案例(已经实现)是一个过滤器,用于对用户名和密码进行编码以进行 BASIC 身份验证。在将请求实际发送到服务器之前,将调用客户端筛选器。ClientRequestFilter

Client ---> Filter ---> Internet ---> Server ---> Resource

还有遵循以程XxxResponseFilters

Resource ---> ContainerResponseFilter ---> Server ---> Internet ---> Client

Server ---> Internet ---> ClientResponseFilter ---> Client

答案 2