Tavaszi webes kommentárok

Ez a cikk egy sorozat része: • Tavaszi magjegyzetek

• 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