Clientrequestfilter与Containerrequestfilter

sun*_*leo 9 java rest web-services jax-rs jersey

我知道过滤器用于处理请求,可以使用http header和httpmethods做事,但我很困惑

clientrequestfilter和containerrequestfilter有什么区别?在哪种情况下我们必须使用clientrequestfilter和containerrequestfilter?

我试过这个网站,但没有任何关于此的细节.

请帮我理解这个.

Pau*_*tha 12

REST交互有两个方面,即客户端和服务器.Jersey/JAX-RS-2同时具有客户端API和"主要"服务器端API.使用Client API时,我们可以使用ClientRequestFilter,当使用Server Side API时,我们会使用ContainerRequestFilter.没有可能混合和匹配这些,它们应该严格地与​​交互的适当方面一起使用.

ContainerRequestFilter(服务器端)的例子是做一些授权/认证,其中一个很常见的用例服务器端过滤器.在到达任何资源之前,将调用过滤器

Client --->  Internet ---> Server ---> Filter ---> Resource
Run Code Online (Sandbox Code Playgroud)

一个ClientRequestFilter(客户端)例如将实施一些客户端缓存(有点嘲讽的浏览器缓存).或者aa情况(已经实现)是一个过滤器,用于对BASIC身份验证的用户名和密码进行编码.在请求实际发送到服务器之前,将调用客户端过滤器.

Client ---> Filter ---> Internet ---> Server ---> Resource
Run Code Online (Sandbox Code Playgroud)

还有XxxResponseFilters以下流程

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

Server ---> Internet ---> ClientResponseFilter ---> Client
Run Code Online (Sandbox Code Playgroud)