@RequestParam tavasz vs @PathVariable kommentárok
1. Áttekintés
Ebben a gyors bemutatóban megvizsgáljuk a tavaszi különbségeket @RequestParam és @PathVariable annotációk.
@RequestParam és @PathVariable mindkettő használható értékek kivonására a kérés URI-ból, de ezek kissé eltérnek.
2. Lekérdezési paraméter vs URI útvonal
Míg @RequestParams kivonja az értékeket a lekérdezési karakterláncból, @PathVariables értékek kivonása az URI útvonalból:
@GetMapping ("/ foos / {id}") @ResponseBody public String getFooById (@PathVariable String id) {return "ID:" + id; }
Ezután az útvonal alapján térképezhetünk fel:
// localhost: 8080 / foos / abc ---- ID: abc
És azért @RequestParam, lesz:
@GetMapping ("/ foos") @ResponseBody public String getFooByIdUsingQueryParam (@RequestParam String id) {return "ID:" + id; }
Ami ugyanazt a választ adná, csak egy másik URI-t:
// localhost: 8080 / foos? id = abc ---- ID: abc
3. Kódolt vs pontos érték
Mivel @PathVariable értékeket von le az URI elérési útjáról, nincs kódolva. Másrészről, @RequestParam van.
Az előző példát használva ab + c a jelenlegi állapotában tér vissza:
// localhost: 8080 / foos / ab + c ---- ID: ab + c
De érte a @RequestParam kérés, a paraméter URL dekódolt:
// localhost: 8080 / foos? id = ab + c ---- ID: ab c
4. Opcionális értékek
Mindkét @RequestParam és @PathVariable opcionális lehet.
Meg tudjuk csinálni @PathVariable opcionális a kívánt a 4.3.3 tavasszal kezdődő attribútum:
@GetMapping ({"/ myfoos / optional", "/ myfoos / optional / {id}"}) @ResponseBody public String getFooByOptionalId (@PathVariable (kötelező = hamis) String id) {return "ID:" + id; }
Amit akkor tehetünk:
// localhost: 8080 / myfoos / optional / abc ---- ID: abc
vagy:
// localhost: 8080 / myfoos / optional ---- ID: null
Mert @RequestParam, használhatjuk a kívánt tulajdonság.
Vegye figyelembe, hogy vigyáznunk kell a készítésre @PathVariable opcionális, hogy elkerülje a konfliktusokat az utakon.
5. Következtetés
Ebben a cikkben megtudtuk a különbségeket @RequestParam és @PathVariable.
A példák teljes forráskódja megtalálható a GitHub oldalon.