Ich denke an zwei Möglichkeiten für den Umgang mit Abfrage/Anfrageparameter:Sollte ich @QueryParam oder @BeanParam in JAX-RS verwenden?
- Map einzelnen Parameter, um die Verfahrensparameter entsprechen:
@GET
public String blah(@QueryParam("testParam") String testParam) {
}
- Karte alle Parameter auf die Eigenschaften einer Java Bean:
@GET
public String blah(@BeanParam RequestParamBean bean) {
}
Die zweite Option scheint attraktiver zu sein, da sie es ermöglicht, die Validierungslogik von Eingabeabfrageparametern von der blah
Methode zu verschieben und zu entkoppeln, deren Hauptverantwortlichkeit darin bestehen sollte, die Validierung zu einem Validator zu verarbeiten und zu delegieren (auch SOLID Prinzip) , Recht?).
Die meisten Beispiele, die ich sehe (tatsächlich, das bestehende Projekt, an dem ich gerade arbeite), verwenden jedoch nur die erste Option. Ich frage mich, ob es einen Grund gibt, warum die zweite Option nicht weit verbreitet ist? Gibt es irgendwelche Fallstricke? Ist das ein Anti-Muster? Ist das gegen jede Best Practice?
Vielen Dank für Ihre Antwort. Ich verstehe den letzten Absatz nicht. Der Grund, warum ich @BeanParam verwenden möchte, besteht darin, die Validierungslogik an einen anderen Ort zu delegieren, da mehr von den 50% des Codes in einer Methode für die Validierung von Methodenparametern verwendet wird. Außerdem ist die Validierung der Eingabeparameter in den verschiedenen Methoden inkonsistent - dh einige Methoden testen überhaupt nicht. Wenn wir also einen Mechanismus haben, der sicherstellen würde, dass wir all diesen Situationen gerecht werden, wäre das großartig. – user1539343
@ user1539343 Wenn das @ BeanParam bietet, was Sie brauchen, verwenden Sie es :) –