@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.