Tavasz @ Pathvariable Annotation
1. Áttekintés
Ebben a gyors bemutatóban felfedezzük a tavaszit @PathVariable annotáció.
Egyszerűen fogalmazva, a @PathVariable annotáció használható a sablonváltozók kezelésére a kérelem URI leképezésében, és használja őket metódus paraméterekként.
Nézzük meg, hogyan kell használni @PathVariable és annak különféle tulajdonságai.
2. Egyszerű leképezés
A @PathVariable a kommentár egy olyan végpont lenne, amely egy entitást azonosít egy elsődleges kulccsal:
@GetMapping ("/ api / alkalmazottai / {id}") @ResponseBody public String getEmployeesById (@PathVariable String id) {return "ID:" + id; }
Ebben a példában azt használjuk @PathVariable annotáció az URI sablonos részének kibontásához, amelyet a változó képvisel {id}.
Egy egyszerű GET kérés nak nek / api / alkalmazottak / {id} hivatkozni fog getEmployeesById a kibontott id értékkel:
// localhost: 8080 / api / alkalmazottak / 111 ---- ID: 111
Most vizsgáljuk meg tovább ezt az annotációt, és nézzük meg annak attribútumait.
3. Adja meg az útváltozó nevét
Az előző példában kihagytuk a sablon útváltozó nevének meghatározását, mivel a method paraméter és az path változó neve megegyezett.
Ha azonban az útváltozó neve eltér, akkor megadhatjuk a. Argumentumában @PathVariable kommentár:
@GetMapping ("/ api / workerswithvariable / {id}") @ResponseBody public String getEmployeesByIdWithVariableName (@PathVariable ("id") String workerId) {return "ID:" + workerId; }
// localhost: 8080 / api / workerswith változó / 1 ---- ID: 1
Az útváltozó nevét is definiálhatjuk @PathVariable (érték = "id") ahelyett PathVariable („id”) az érthetőség kedvéért.
4. Több útváltozó egyetlen kérelemben
A felhasználási esettől függően egy vezérlő metódusra vonatkozó kérés URI-ben több útváltozó is szerepelhet, amelynek szintén több metódus paramétere van:
@GetMapping ("/ api / alkalmazottak / {id} / {név}") @ResponseBody nyilvános karakterlánc getEmployeesByIdAndName (@PathVariable karakterlánc azonosítója, @PathVariable karakterlánc neve) {return "ID:" + id + ", név:" + név ; }
// localhost: 8080 / api / alkalmazottak / 1 / bar ---- ID: 1, név: bar
Többet is kezelhetünk @PathVariable paraméterek egy típusú metódus paraméter használatával java.util.Térkép:
@GetMapping ("/ api / workerswithmapvariable / {id} / {name}") @ResponseBody public String getEmployeesByIdAndNameWithMapVariable (@PathVariable Map pathVarsMap) {String id = pathVarsMap.get ("id"); Karakterlánc neve = pathVarsMap.get ("név"); if (id! = null && név! = null) {return "ID:" + id + ", név:" + név; } else {return "Hiányzó paraméterek"; }}
// localhost: 8080 / api / alkalmazottak / 1 / bar ---- ID: 1, név: bar
Van azonban egy kis fogás több @ kezelése közbenPathVariable paramétereket, ha az elérési út változó karakterlánc tartalmaz egy pont (.) karaktert. Itt részletesen megvitattuk ezeket a sarokeseteket.
5. Opcionális útváltozók
Tavasszal a módszer paraméterei annotálva voltak @PathVariable alapértelmezés szerint kötelezőek:
@GetMapping (érték = {"/ api / alkalmazottakkívánatos", "/ api / alkalmazottakkívánatos / {id}"}) @ResponseBody nyilvános karakterlánc getEmployeesByIdWithRequired (@PathVariable String id) {return "ID:" + id; }
A megjelenés szerint a fenti vezérlőnek mindkettőt kezelnie kell / api / alkalmazottak szükségesek és / api / szükséges alkalmazottak / 1 kérési utak. De mivel a metódus paramétereit a @PathVariables alapértelmezés szerint kötelezőek, nem kezeli a címzettnek küldött kéréseket / api / alkalmazottak szükségesek pálya:
// localhost: 8080 / api / alkalmazottakmegkövetelt ---- {"időbélyeg": "2020-07-08T02: 20: 07.349 + 00: 00", "status": 404, "error": "Not Found", " üzenet ":" "," elérési út ":" / api / alkalmazottak szükségesek "}
// helyi gazda: 8080 / api / alkalmazottai szükségesek / 1 ---- ID: 111
Ezt kétféleképpen tudjuk kezelni.
5.1. Beállítás @PathVariable mint nem kötelező
Beállíthatjuk a kívánt tulajdona @PathVariable nak nek hamis hogy opcionális legyen. Ezért az előző példánkat módosítva most már kezelhetjük az URI verziókat a path változóval és anélkül is:
@GetMapping (érték = {"/ api / alkalmazottai megkövetelt hamis", "/ api / munkatársai megkövetelt hamis / {id}"}) @ResponseBody nyilvános karakterlánc getEmployeesByIdWithRequiredFalse (@PathVariable (kötelező = hamis) Karakterlánc azonosító) {if (id! = Null) { return "ID:" + id; } else {return "hiányzó azonosító"; }}
// localhost: 8080 / api / workerswithrequiredfalse ---- Azonosító hiányzik
5.2. Használata java.util.Opcionális
A 4.1 tavasz óta mi is használhatjuk java.util.Opcionális (Java 8+ verzióban érhető el) a nem kötelező elérési útváltozó kezeléséhez:
@GetMapping (érték = {"/ api / alkalmazottak opcionális", "/ api / alkalmazottak opcionális / {id}"}}) @ResponseBody nyilvános karakterlánc getEmployeesByIdWithOptional (@PathVariable Opcionális id) {if (id.isPresent ()) {return "ID: "+ id.get (); } else {return "hiányzó azonosító"; }}
Most, ha nem adjuk meg az elérési út változót id a kérésben megkapjuk az alapértelmezett választ:
// localhost: 8080 / api / alkalmazottai opcionálisan ---- Azonosító hiányzik
5.3. Metódus típusú paraméter használata Térkép
Amint azt korábban bemutattuk, egyetlen típusú típusú paramétert használhatunk java.util.Térkép a kérelem URI összes útváltozójának kezeléséhez. Ezt a stratégiát használhatjuk az opcionális útváltozók esetének kezelésére is:
@GetMapping (érték = {"/ api / alkalmazottai a térképen / {id}", "/ api / alkalmazottak a térképen"}) @ResponseBody public String getEmployeesByIdWithMap (@PathVariable Map pathVarsMap) {String id = pathVarsMap.get ("id"); if (id! = null) {return "ID:" + id; } else {return "hiányzó azonosító"; }}
6. Alapértelmezett értéke @PathVariable
A dobozból kiindulva nincs olyan rendelkezés, amely meghatározná az alapértelmezett értéket a metódusokkal, amelyekhez a jegyzetet mellékelték @PathVariable. Ugyanakkor a fentiekben tárgyalt stratégiákat alkalmazhatjuk a (z) alapértelmezett értékének kielégítésére @PathVariable. Csak ellenőriznünk kell nulla az útváltozón.
Például a java.util.Opcionális, azonosíthatjuk, hogy az útváltozó-e nulla vagy nem. Ha az nulla akkor csak alapértelmezett értékkel válaszolhatunk a kérésre:
@GetMapping (value = {"/ api / defaultemployeeswithoptional", "/ api / defaultemployeeswithoptional / {id}"}) @ResponseBody public String getDefaultEmployeesByIdWithOptional (@PathVariable Optional id) {if (id.isPresent ()) {return "ID "+ id.get (); } else {return "ID: Alapértelmezett alkalmazott"; }}
7. Következtetés
Ebben a cikkben megvitattuk a Spring's használatát @PathVariable annotáció. Meghatároztuk a @PathVariable annotáció, hogy megfeleljen a különféle felhasználási eseteknek, például opcionális paramétereknek és az alapértelmezett értékeknek
Az ebben a cikkben bemutatott kódpélda a Githubon is elérhető.