Tavaszi @RequestParam kommentár
1. Áttekintés
Ebben a gyors bemutatóban felfedezzük a tavaszit @RequestParam annotáció és attribútumai.
Egyszerűen fogalmazva, használhatjuk @RequestParam lekérdezési paraméterek, űrlapparaméterek, sőt fájlok kibontása a kérésből.
2. Egyszerű leképezés
Tegyük fel, hogy van egy végpontunk / api / foos nevű lekérdezési paramétert vesz fel id:
@GetMapping ("/ api / foos") @ResponseBody public String getFoos (@RequestParam String id) {return "ID:" + id; }
Ebben a példában használtuk @RequestParam hogy kivonja a id lekérdezési paraméter.
Egy egyszerű GET kérés hivatkozik getFoos:
// localhost: 8080 / api / foos? id = abc ---- ID: abc
Következő, nézzük meg az annotáció attribútumait: név, érték, kívánt, és alapértelmezett érték.
3. A Request Parameter Name megadása
Az előző példában a változó neve és a paraméter neve is megegyezik.
Néha azt akarjuk, hogy ezek eltérjenek. Vagy ha nem a Spring Boot programot használjuk, akkor lehet, hogy speciális fordítási idejű konfigurációt kell végrehajtanunk, különben a paraméterek neve valójában nem lesz a bájtkódban.
Szerencsére, konfigurálhatjuk a @RequestParam nevet a név tulajdonság:
@PostMapping ("/ api / foos") @ResponseBody public String addFoo (@RequestParam (name = "id") String fooId, @RequestParam String name) {return "ID:" + fooId + "Név:" + név; }
Megtehetjük azt is @RequestParam (érték = „id”) vagy csak @RequestParam („id”).
4. Opcionális kérési paraméterek
A módszer paraméterei a következőkkel vannak kiegészítve @RequestParam alapértelmezés szerint szükségesek.
Ez azt jelenti, hogy ha a paraméter nem szerepel a kérésben, akkor hibaüzenetet kapunk:
GET / api / foos HTTP / 1.1 ----- 400 Hibás kérés szükséges Szükséges karakterlánc-paraméter nem található
Konfigurálhatjuk @RequestParam opcionális, bár a kívánt tulajdonság:
@GetMapping ("/ api / foos") @ResponseBody public String getFoos (@RequestParam (kötelező = hamis) String id) {return "ID:" + id; }
Ebben az esetben mindkettő:
// localhost: 8080 / api / foos? id = abc ---- ID: abc
és
// localhost: 8080 / api / foos ---- ID: null
helyesen fogja meghívni a módszert.
Ha a paraméter nincs megadva, akkor a metódus paraméterhez lesz kötve nulla.
4.1. Java 8 használata Választható
Alternatív megoldásként bepakolhatjuk a paramétert Választható:
@GetMapping ("/ api / foos") @ResponseBody public String getFoos (@RequestParam Opcionális azonosító) {return "ID:" + id.orElseGet (() -> "nincs megadva"); }
Ebben az esetben, nem kell megadnunk a kívánt tulajdonság.
És az alapértelmezett értéket használjuk, ha a kérés paramétert nem adjuk meg:
// localhost: 8080 / api / foos ---- ID: nincs megadva
5. A Request Parameter alapértelmezett értéke
Alapértelmezett értéket is beállíthatunk a @RequestParam a alapértelmezett érték tulajdonság:
@GetMapping ("/ api / foos") @ResponseBody public String getFoos (@RequestParam (defaultValue = "test") String id) {return "ID:" + id; }
Ez olyan, mint kötelező = hamis, annyiban, hogy a felhasználónak már nem kell megadnia a paramétert:
// localhost: 8080 / api / foos ---- ID: test
Bár továbbra is rendben vagyunk, hogy megadjuk:
// localhost: 8080 / api / foos? id = abc ---- ID: abc
Vegye figyelembe, hogy amikor beállítjuk a alapértelmezett érték tulajdonság, kívánt valóban beállítva van hamis.
6. Az összes paraméter feltérképezése
Több paraméterünk is lehet, anélkül, hogy meghatároznánk a nevüket vagy csak az a használatával számoljon Térkép:
@PostMapping ("/ api / foos") @ResponseBody public String updateFoos (@RequestParam Map allParams) {return "A paraméterek" + allParams.entrySet (); }
amely visszatükrözi az elküldött paramétereket:
curl -X POST -F 'név = abc' -F 'id = 123' // localhost: 8080 / api / foos ----- A paraméterek {[név = abc], [id = 123]}
7. Többértékű paraméter leképezése
Egyetlen @RequestParam több értéke lehet:
@GetMapping ("/ api / foos") @ResponseBody public String getFoos (@RequestParam List id) {return "Azonosítók vannak" + id; }
A Spring MVC pedig vesszővel elválasztott térképet fog feltérképezni id paraméter:
// localhost: 8080 / api / foos? id = 1,2,3 ---- Azonosító: [1,2,3]
vagy különállóak listája id paraméterek:
// localhost: 8080 / api / foos? id = 1 & id = 2 ---- Azonosítók [1,2]
8. Következtetés
Ebben a cikkben megtanultuk a használatát @RequestParam.
A példák teljes forráskódja a GitHub projektben található.