2014-12-20 67 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

相關問題