Есть две стороны взаимодействия REST, клиент и сервер. Джерси/JAX-RS-2 имеет как клиентский API, так и «основной» серверный API. При работе с API-интерфейсом клиента мы могли бы использовать ClientRequestFilter
, а при использовании API-интерфейса на стороне сервера мы использовали бы ContainerRequestFilter
. Невозможно смешивать и сопоставлять их, их следует строго использовать с соответствующей стороны взаимодействия.
A ContainerRequestFilter
(Server Side) пример должен был бы сделать некоторую авторизацию/аутентификацию, что довольно распространенный вариант использования для фильтра на стороне сервера. Фильтр будет вызываться до достижения какой-либо из ваших ресурсов
Client ---> Internet ---> Server ---> Filter ---> Resource
ClientRequestFilter
(на стороне клиента) пример будет реализовать некоторые на стороне клиента кэш (вроде насмешливый кэш браузера). Или случай (который уже реализован) является фильтром для кодирования имени пользователя и пароля для аутентификации BASIC. Прежде чем запрос действительно будет отправлен на сервер, клиентский фильтр будет вызван.
Client ---> Filter ---> Internet ---> Server ---> Resource
Есть также XxxResponseFilters
, которые следуют следующие действия потока
Resource ---> ContainerResponseFilter ---> Server ---> Internet ---> Client
Server ---> Internet ---> ClientResponseFilter ---> Client
Спасибо это было очень полезно. – sunleo