Tavaszi webes kommentárok
• Tavaszi internetes kommentárok (aktuális cikk) • Tavaszi indítási kommentárok
• Tavaszi ütemezési kommentárok
• Tavaszi adatjegyzetek
• Tavaszi babjegyzetek
1. Áttekintés
Ebben az oktatóanyagban a tavaszi webes kommentárokat tárjuk fel org.springframework.web.bind.annotation csomag.
2. @RequestMapping
Egyszerűen fogalmazva, @RequestMappingjelek kéréskezelő módszerek belül @Vezérlő osztályok; a következő módon konfigurálható:
- pálya, vagy annak álnevei, név, és érték: melyik URL-re van leképezve a módszer
- módszer: kompatibilis HTTP módszerekkel
- paramek: a HTTP-paraméterek jelenléte, hiánya vagy értéke alapján szűri a kéréseket
- fejlécek: a HTTP fejlécek jelenléte, hiánya vagy értéke alapján szűri a kéréseket
- fogyaszt: hogy a metódus melyik médiatípust fogyaszthatja el a HTTP kéréstestben
- gyárt: hogy a metódus milyen adathordozó típusokat képes előállítani a HTTP választörzsben
Íme egy gyors példa a küllemre:
@Controller osztály VehicleController {@RequestMapping (value = "/ járművek / home", method = RequestMethod.GET) String home () {return "home"; }}
Tudunk nyújtani alapértelmezett beállítások az összes kezelő módszerhez a @Vezérlő osztály ha ezt az annotációt osztály szinten alkalmazzuk. Az egyetlen kivétel az az URL, amelyet a Spring nem fog felülírni metódus szintű beállításokkal, de hozzáfűzi a két útvonalrészt.
Például a következő konfigurációnak ugyanaz a hatása, mint a fentieknek:
@Controller @RequestMapping (value = "/ járművek", method = RequestMethod.GET) osztály VehicleController {@RequestMapping ("/ home") String home () {return "home"; }}
Ráadásul, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, és @PatchMapping különböző változatai @RequestMapping a HTTP módszerrel már GET, POST, PUT, DELETE és PATCH értékre van állítva.
Ezek a 4.3 tavaszi kiadás óta elérhetők.
3. @ RequestBody
Menjünk tovább @ RequestBody - amely feltérképezi a objektum HTTP-kérésének törzse:
@PostMapping ("/ save") void saveVehicle (@RequestBody Vehicle vehicle) {// ...}
A deszerizálás automatikus, és a kérelem tartalmi típusától függ.
4. @PathVariable
Ezután beszéljünk @PathVariable.
Ez a feljegyzés azt jelzi, hogy a A metódus argumentum egy URI sablonváltozóhoz van kötve. Az URI sablont megadhatjuk a @RequestMapping annotációt és a metódus argumentumot a sablon egyik részéhez kösd a @PathVariable.
Ezt elérhetjük a név vagy annak álneve, az érték érv:
@RequestMapping ("/ {id}") Jármű getVehicle (@PathVariable ("id") hosszú azonosító) {// ...}
Ha a sablonban lévő rész neve megegyezik a metódus argumentum nevével, akkor ezt nem kell megadnunk a kommentárban:
@RequestMapping ("/ {id}") Jármű getVehicle (@PathVariable hosszú azonosító) {// ...}
Sőt, az argumentum beállításával opcionálisan jelölhetünk egy útváltozót kívánt hamisra:
@RequestMapping ("/ {id}") Jármű getVehicle (@PathVariable (kötelező = hamis) hosszú azonosító) {// ...}
5. @RequestParam
Használunk @RequestParam mert a HTTP kérés paramétereinek elérése:
@RequestMapping Vehicle getVehicleByParam (@RequestParam ("id") hosszú id) {// ...}
Ugyanazok a konfigurációs lehetőségek vannak, mint a @PathVariable annotáció.
Ezen beállítások mellett a @RequestParam megadhatunk egy injektált értéket, amikor Spring nem talál vagy üres értéket a kérésben. Ennek eléréséhez be kell állítanunk a alapértelmezett érték érv.
Az alapértelmezett érték megadása implicit módon be van állítva kívánt nak nek hamis:
@RequestMapping ("/ buy") Autó buyCar (@RequestParam (defaultValue = "5") int seatCount) {// ...}
A paraméterek mellett vannak egyéb HTTP kérés részek, amelyekhez hozzáférhetünk: sütik és fejlécek. A jegyzetekkel hozzájuk férhetünk @CookieValue és @ RequestHeader illetőleg.
Konfigurálhatjuk őket ugyanúgy, mint @RequestParam.
6. Válaszkezelési kommentárok
A következő szakaszokban megnézzük a HTTP-válaszok manipulálásának leggyakoribb kommentárjait a Spring MVC-ben.
6.1. @ResponseBody
Ha egy kéréskezelő módszert jelölünk @ResponseBody,Spring a módszer eredményét maga a válaszként kezeli:
@ResponseBody @RequestMapping ("/ hello") String hello () {return "Hello World!"; }
Ha feljegyezzük a @Vezérlő osztályban ezzel az annotációval, az összes kérelemkezelő módszer fogja használni.
6.2. @ExceptionHandler
Ezzel az annotációval kijelenthetjük a egyedi hibakezelő módszer. Spring meghívja ezt a módszert, amikor egy kéréskezelő metódus a megadott kivételek bármelyikét elveti.
A fogott kivétel argumentumként átadható a módszernek:
@ExceptionHandler (IllegalArgumentException.class) void onIllegalArgumentException (IllegalArgumentException kivétel) {// ...}
6.3. @ResponseStatus
Megadhatjuk a a válasz kívánt HTTP-állapota ha ezzel a feljegyzéssel feljegyezünk egy kéréskezelő módszert. Az állapotkódot a kód érv, vagy annak álneve, a érték érv.
Emellett okot is megadhatunk a ok érv.
Azt is használhatjuk együtt @ExceptionHandler:
@ExceptionHandler (IllegalArgumentException.class) @ResponseStatus (HttpStatus.BAD_REQUEST) void onIllegalArgumentException (IllegalArgumentException kivétel) {// ...}
További információ a HTTP válasz állapotáról:
7. Egyéb webes kommentárok
Egyes kommentárok nem kezelik közvetlenül a HTTP-kérelmeket vagy -válaszokat. A következő szakaszokban bemutatjuk a leggyakoribbakat.
7.1. @Vezérlő
A Spring MVC vezérlőt definiálhatjuk @Vezérlő. További információkért kérjük, olvassa el a tavaszi bab kommentárokról szóló cikkünket.
7.2. @RestController
A @RestControlleregyesíti @Vezérlő és @ResponseBody.
Ezért a következő nyilatkozatok egyenértékűek:
@Controller @ResponseBody osztály VehicleRestController {// ...}
@RestController osztály VehicleRestController {// ...}
7.3. @ModelAttribute
Ezzel az annotációval megtehetjük hozzáférési elemek, amelyek már szerepelnek a modellben egy MVC @Vezérlő, a modellkulcs megadásával:
@PostMapping ("/ assemble") void assembleVehicle (@ModelAttribute ("vehicle") Vehicle vehicleInModel) {// ...}
Mint a @PathVariable és @RequestParam, akkor nem kell megadnunk a modellkulcsot, ha az argumentumnak ugyanaz a neve:
@PostMapping ("/ assemble") void assembleVehicle (@ModelAttribute Vehicle vehicle) {// ...}
Kívül, @ModelAttribute van még egy felhasználása: ha feljegyezünk vele egy módszert, akkor Spring fogja automatikusan hozzáadja a módszer visszatérési értékét a modellhez:
@ModelAttribute ("jármű") Jármű getVehicle () {// ...}
Az eddigiekhez hasonlóan itt sem kell megadnunk a modellkulcsot, a Spring alapértelmezés szerint a módszer nevét használja:
@ModelAttribute Vehicle vehicle () {// ...}
Mielőtt Spring meghívna egy kéréskezelő metódust, meghívja az összeset @ModelAttribute jegyzetekkel ellátott módszerek az osztályban.
További információ @ModelAttribute ebben a cikkben található.
7.4. @CrossOrigin
@CrossOriginlehetővé teszi a tartományok közötti kommunikációt az annotált kéréskezelő módszereknél:
@CrossOrigin @RequestMapping ("/ hello") String hello () {return "Hello World!"; }
Ha egy osztályt jelölünk vele, az az összes benne lévő kérelemkezelő módszerre vonatkozik.
Ennek a kommentárnak az érveivel finomhangolhatjuk a CORS viselkedését.
További részletekért kérjük, olvassa el ezt a cikket.
8. Következtetés
Ebben a cikkben láttuk, hogyan tudjuk kezelni a HTTP kéréseket és válaszokat a Spring MVC segítségével.
Szokás szerint a példák elérhetők a GitHub oldalon.
Következő » Tavaszi bakancs kommentárok « Korábbi tavaszi alapjegyzetek