2014-12-20 15 views
7

sapevo filtri vengono utilizzati per gestire la richiesta e possono fare le cose con l'intestazione http e httpmethods, ma sono confuso conClientrequestfilter vs Containerrequestfilter

Qual è la differenza tra clientrequestfilter e containerrequestfilter? In quale scenario dobbiamo usare clientrequestfilter e containerrequestfilter?

Ho provato con this website ma non tutti i dettagli su questo.

Per favore aiutami a capire questo.

risposta

10

Ci sono due parti di un'interazione REST, il client e il server. Jersey/JAX-RS-2 ha sia un'API Client sia l'API "principale" lato server. Quando lavoriamo con l'API client, potremmo utilizzare lo ClientRequestFilter e, quando utilizziamo l'API lato server, utilizzeremmo lo ContainerRequestFilter. Non c'è alcuna possibilità di combinarli, dovrebbero essere strettamente utilizzati con il lato appropriato dell'interazione.

A ContainerRequestFilter (Lato server) esempio sarebbe quello di fare un po 'di autorizzazione/autenticazione, che un caso d'uso piuttosto comune per il filtro lato server. Il filtro verrà richiamato prima di raggiungere le tue risorse

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

A ClientRequestFilter (lato client) esempio potrebbe essere un po 'di implementare la cache lato client (una sorta di beffardo una cache del browser). Oppure un caso (già implementato) è un filtro per codificare un nome utente e una password per l'autenticazione BASIC. Prima che la richiesta venga effettivamente inviata al server, il filtro client verrà richiamato.

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

Ci sono anche XxxResponseFilters che seguono il seguente flusso

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

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

Grazie è stato davvero utile. – sunleo