2014-12-20 35 views
7

我知道过滤器来处理请求,并可以做HTTP头和httpmethods的事情,但我有Clientrequestfilter VS Containerrequestfilter

是什么clientrequestfilter和containerrequestfilter之间的区别感到困惑? 在这种情况下,我们必须使用clientrequestfilter和containerrequestfilter?

我试着用this website但不是关于这个的任何细节。

请帮我理解这一点。

回答

10

REST交互有两个方面:客户端和服务器。 Jersey/JAX-RS-2具有客户端API和“主”服务器端API。在使用客户端API时,我们可以使用ClientRequestFilter,并且在使用服务器端API时,我们将使用ContainerRequestFilter。没有可能混合和匹配这些内容,它们应该严格用于交互的适当方面。

ContainerRequestFilter(服务器端)的例子是做一些授权/验证,一个很常见的使用情况服务器侧滤波器。该过滤器会达成任何你的资源

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

一个ClientRequestFilter(客户端)例如将是实现一些客户端缓存(有点嘲讽的浏览器缓存)之前被调用。或者一个案例(已经实施)是一个过滤器,用于编码BASIC认证的用户名和密码。在请求实际发送到服务器之前,客户端过滤器将被调用。

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

也有XxxResponseFilters遵循以下流程

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

Server ---> Internet ---> ClientResponseFilter ---> Client 
+0

由于这是真的很有帮助。 – sunleo

相关问题