Die Annotationen @RequestParam, @QueryParam und @PathVariable, PathParam werden verwendet um Werte aus dem Request auszulesen. Doch welchen verwendet man wofür?
Die Anordnung in der Auflistung ist bewusst so gruppiert, denn es handelt sich dabei um Annotationen die die selbe Aufgabe haben nur aus unterschiedlichen Frameworks stammen, die oft miteinander in Kombination auftreten.
Vergleich
Framework | Pfad-Segment | http Query-Parameter |
---|---|---|
Jersey (JAX-RS) | @PathParam | @QueryParam |
Spring RESTFul | @PathVariable | @RequestParam |
Beispiel | http://nullpointer.at/{segment} | http://nullpointer.at/?param{param} |
Wie in der Tabelle ersichtlich, liegt der unterschied darin von wo ein Wert ausgelesen wird. @PathParam liest den Wert aus einem Pfad-Bestandteil der aufgerufenen URI aus. @QueryParam dient dazu die Werte aus QueryParametern eines URI Aufrufes auszulesen. Diese sind nach dem ? in einer URI aufgelistet.
PathParams sind im positionsabhängig, während QueryParams als Key Value Paar übergeben werden und daher ihre Reihenfolge bei mehr als einem QueryParam irrelevant ist.
Beispiel
Als Beispiel nochmal beide Aufrufe in einer URI:
https://www.nullpointer.at/<@PathParam>/?queryParamName=<@QueryParm>
Weiterführende Links
https://docs.oracle.com/javaee/7/api/javax/ws/rs/PathParam.html
https://docs.oracle.com/javaee/7/api/javax/ws/rs/QueryParam.html
Schreibe einen Kommentar