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")
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?
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%Tags und Links java rest interceptor resteasy