Wie wird der RESTEasy PreProcessInterceptor nur in bestimmten Methoden verwendet?

8

Ich schreibe eine REST-API, die RestEasy 2.3.4.Final verwendet. Ich weiß, dass ein Interceptor alle meine Anfragen abfängt und dass ein PreProcessInterceptor der erste (vor allem) sein wird, der aufgerufen wird. Ich würde gerne wissen, wie ich diesen Interceptor nur dann aufrufen kann, wenn bestimmte Methoden aufgerufen werden.

Ich habe versucht, PreProcessInterceptor und AcceptedByMethod zu verwenden, aber ich konnte die Parameter, die ich brauche, nicht lesen. Zum Beispiel muss ich meinen Interceptor nur ausführen, wenn diese Methode aufgerufen wird:

%Vor%

Um genauer zu sein, muss ich meinen Interceptor in allen Methoden ausführen, die ein @QueryParam("name")

haben

auf seiner Unterschrift, damit ich den Namen ergreifen und etwas vor allem machen kann.

Ist es möglich? Ich habe versucht, den Parameter "name" im Interceptor abzufangen, aber das konnte ich nicht.

Könnte mir bitte jemand helfen?

    
pulu 06.07.2012, 21:49
quelle

2 Antworten

7

Sie können AcceptedByMethod verwenden, wie im RESEasy erklärt Dokumentation

Erstellen Sie eine Klasse, die sowohl PreProcessInterceptor als auch AcceptedByMethod implementiert. In der accept -Methode können Sie überprüfen, ob die Methode einen Parameter mit der Anmerkung @QueryParam("name") enthält. Wenn die Methode diese Annotation hat, gebe true von der accept -Methode zurück.

In der preProcess -Methode können Sie den Abfrageparameter von request.getUri().getQueryParameters().getFirst("name") abrufen.

BEARBEITEN:

Hier ist ein Beispiel:

%Vor%     
eiden 07.07.2012, 13:56
quelle
2

Wenn Sie return new ServerResponse(responseText, 200, new Headers<Object>()); zurückgeben, verlieren Sie den Endpunkt. Sie müssen null zurückgeben, wenn Sie weiterhin möchten, dass die Nachricht an den letzten Punkt gesendet wird.

    
Sir Gio 10.12.2012 15:08
quelle

Tags und Links