2014-12-20 2 views
7

Я знал, что фильтры используются для обработки запроса и может сделать что-то с HTTP заголовка и httpmethods, но я путать сClientrequestfilter против Containerrequestfilter

В чем разница между clientrequestfilter и containerrequestfilter? В каком сценарии мы должны использовать clientrequestfilter и containerrequestfilter?

Я пробовал с this website, но никаких подробностей об этом.

Пожалуйста, помогите мне разобраться в этом.

ответ

10

Есть две стороны взаимодействия 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 
+0

Спасибо это было очень полезно. – sunleo

Смежные вопросы