Jar @RequestMapping Nové poznámky k skratkám

1. Prehľad

Jar 4.3. predstavil niekoľko veľmi zaujímavých komponovaných anotácií na úrovni metódy, ktoré uľahčili manipuláciu @RequestMapping v typických jarných projektoch MVC.

V tomto článku sa dozvieme, ako ich efektívne využívať.

2. Nové anotácie

Spravidla, ak chceme implementovať obslužnú rutinu URL pomocou tradičných @RequestMapping anotácia, mohlo by to byť asi takto:

@RequestMapping (value = "/ get / {id}", method = RequestMethod.GET)

Nový prístup umožňuje toto skrátiť jednoducho na:

@GetMapping ("/ get / {id}")

Jar v súčasnosti podporuje päť typov vstavaných anotácií na spracovanie rôznych typov prichádzajúcich metód HTTP požiadaviek, ktoré sú GET, POST, PUT, DELETE, DELETE a PATCH. Tieto anotácie sú:

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

Z pomenovacej konvencie vidíme, že každá anotácia je určená na spracovanie príslušného typu metódy prichádzajúcej žiadosti, t.j. @GetMapping sa používa na manipuláciu ZÍSKAJTE typ spôsobu žiadosti, @PostMapping sa používa na manipuláciu POST typ metódy požiadavky atď.

3. Ako to funguje

Všetky vyššie uvedené anotácie sú už interne anotované pomocou @RequestMapping a príslušnú hodnotu v metóda element.

Napríklad, ak sa pozrieme na zdrojový kód z @GetMapping anotácie, vidíme, že už je anotovaná pomocou RequestMethod.GET nasledujúcim spôsobom:

@Target ({java.lang.annotation.ElementType.METHOD}) @Retention (RetentionPolicy.RUNTIME) @Documented @RequestMapping (method = {RequestMethod.GET}) public @interface GetMapping {// abstraktné kódy}

Všetky ďalšie anotácie sa vytvárajú rovnakým spôsobom, t.j. @PostMapping je anotovaný s RequestMethod.POST, @PutMapping je anotovaný s RequestMethod.PUT, atď.

Celý zdrojový kód anotácií je k dispozícii tu.

4. Implementácia

Pokúsme sa použiť tieto anotácie na vytvorenie rýchlej aplikácie REST.

Upozorňujeme, že keďže by sme na zostavenie projektu použili Maven a na vytvorenie našej aplikácie Spring MVC, musíme do pom.xml:

 org.springframework spring-webmvc 5.2.2.RELEASE 

Najnovšia verzia servera jar-webmvc je k dispozícii v centrálnom úložisku Maven.

Teraz musíme vytvoriť radič na mapovanie adresy URL prichádzajúcich požiadaviek. V tomto ovládači by sme použili všetky tieto anotácie jednu po druhej.

4.1. @GetMapping

@GetMapping ("/ get") public @ResponseBody ResponseEntity get () {return new ResponseEntity ("GET Response", HttpStatus.OK); } 
@GetMapping ("/ get / {id}") public @ResponseBody ResponseEntity getById (@PathVariable String id) {return new ResponseEntity ("GET Response:" + id, HttpStatus.OK); }

4.2. @PostMapping

@PostMapping ("/ post") public @ResponseBody ResponseEntity post () {return new ResponseEntity ("POST Response", HttpStatus.OK); }

4.3. @PutMapping

@PutMapping ("/ put") public @ResponseBody ResponseEntity put () {return new ResponseEntity ("PUT Response", HttpStatus.OK); }

4.4. @DeleteMapping

@DeleteMapping ("/ delete") public @ResponseBody ResponseEntity delete () {return new ResponseEntity ("DELETE Response", HttpStatus.OK); }

4.5. @PatchMapping

@PatchMapping ("/ patch") public @ResponseBody ResponseEntity patch () {return new ResponseEntity ("PATCH Response", HttpStatus.OK); }

Body, ktoré je potrebné poznamenať:

  • Použili sme potrebné anotácie na spracovanie správnych prichádzajúcich metód HTTP s URI. Napríklad, @GetMapping spracovať „/ získať“ URI, @PostMapping spracovať „/ post“ URI a tak ďalej

  • Pretože vyrábame aplikáciu založenú na REST, vraciame konštantný reťazec (jedinečný pre každý typ žiadosti) s 200 kódom odpovede, ktorý aplikáciu zjednoduší. Použili sme Spring @ResponseBody anotácia v tomto prípade.
  • Keby sme mali spracovať ľubovoľnú premennú cesty URL, môžeme to jednoducho urobiť oveľa menej, ako sme to zvykli robiť v prípade použitia @RequestMapping.

5. Testovanie aplikácie

Na otestovanie aplikácie musíme vytvoriť niekoľko testovacích prípadov pomocou JUnit. Použili by sme SpringJUnit4ClassRunner na začatie testovacej triedy. Vytvorili by sme päť rôznych testovacích prípadov na otestovanie každej anotácie a každého obslužného programu, ktorý sme deklarovali v radiči.

Zjednodušíme si príklad testovacieho prípadu @GetMapping:

@Test public void giventUrl_whenGetRequest_thenFindGetResponse () vyvolá výnimku {MockHttpServletRequestBuilder builder = MockMvcRequestBuilders .get ("/ get"); ResultMatcher contentMatcher = MockMvcResultMatchers.content () .string ("ZÍSKAŤ odpoveď"); this.mockMvc.perform (builder) .andExpect (contentMatcher) .andExpect (MockMvcResultMatchers.status (). isOk ()); }

Ako vidíme, očakávame konštantný reťazec “ZÍSKAJTE odpoveď“, Akonáhle narazíme na ZÍSKAJTE URL „/ získať“.

Teraz vytvorme testovací prípad na testovanie @PostMapping:

@Test public void givenUrl_whenPostRequest_thenFindPostResponse () vyvolá výnimku {MockHttpServletRequestBuilder builder = MockMvcRequestBuilders .post ("/ post"); ResultMatcher contentMatcher = MockMvcResultMatchers.content () .string ("POST odpoveď"); this.mockMvc.perform (builder) .andExpect (contentMatcher) .andExpect (MockMvcResultMatchers.status (). isOk ()); }

Rovnakým spôsobom sme vytvorili zvyšok testovacích prípadov, aby sme otestovali všetky metódy HTTP.

Prípadne môžeme na testovanie našej aplikácie kedykoľvek použiť ktoréhokoľvek bežného klienta REST, napríklad PostMan, RESTClient atď. V takom prípade musíme byť pri použití zvyšného klienta trochu opatrní pri výbere správneho typu metódy HTTP. V opačnom prípade by to vyhodilo 405 chybový stav.

6. Záver

V tomto článku sme mali rýchly úvod do rôznych typov @RequestMapping skratky pre rýchly vývoj webu pomocou tradičného jarného MVC frameworku. Tieto rýchle skratky môžeme využiť na vytvorenie čistej základne kódu.

Ako vždy, zdrojový kód tohto tutoriálu nájdete v projekte Github.


$config[zx-auto] not found$config[zx-overlay] not found