我知道过滤器是用来处理请求的,并且可以处理http头和httpmethods,但是我把它们搞混了
ClientRequestFilter和ContainerRequestFilter之间有什么区别?在哪种情况下我们必须使用ClientRequestFilter和ContainerRequestFilter?
ClientRequestFilter
ContainerRequestFilter
我试过这个网站,但没有任何细节。请帮助我理解这一点。
qv7cva1a1#
REST交互有两个方面,客户端和服务器。Jersey/JAX-RS-2有客户端API和“主”服务器端API。当使用客户端API时,我们可以使用ClientRequestFilter,当使用服务器端API时,我们将使用ContainerRequestFilter。不可能混合和匹配这些API。它们应该严格地与交互的适当方一起使用。一个ContainerRequestFilter(服务器端)的例子是进行一些授权/认证,这是服务器端过滤器的一个非常常见的用例。
Client ---> Internet ---> Server ---> Filter ---> Resource
一个ClientRequestFilter(客户端)的例子是实现一些客户端缓存(类似于浏览器缓存)。或者一个case(已经实现)是一个过滤器,用于编码BASIC身份验证的用户名和密码。在请求实际发送到服务器之前,客户端过滤器将被调用。
Client ---> Filter ---> Internet ---> Server ---> Resource
还有一些XxxResponseFilters遵循以下流程
XxxResponseFilters
Resource ---> ContainerResponseFilter ---> Server ---> Internet ---> Client Server ---> Internet ---> ClientResponseFilter ---> Client
1条答案
按热度按时间qv7cva1a1#
REST交互有两个方面,客户端和服务器。Jersey/JAX-RS-2有客户端API和“主”服务器端API。当使用客户端API时,我们可以使用
ClientRequestFilter
,当使用服务器端API时,我们将使用ContainerRequestFilter
。不可能混合和匹配这些API。它们应该严格地与交互的适当方一起使用。一个
ContainerRequestFilter
(服务器端)的例子是进行一些授权/认证,这是服务器端过滤器的一个非常常见的用例。一个
ClientRequestFilter
(客户端)的例子是实现一些客户端缓存(类似于浏览器缓存)。或者一个case(已经实现)是一个过滤器,用于编码BASIC身份验证的用户名和密码。在请求实际发送到服务器之前,客户端过滤器将被调用。还有一些
XxxResponseFilters
遵循以下流程