@RequestMapping tavaszi új parancsikon kommentek

1. Áttekintés

Tavasz 4.3. bevezetett néhány nagyon jó módszer szintű összeállított jegyzetet a kezelés egyszerűsítése érdekében @RequestMapping tipikus tavaszi MVC projektekben.

Ebben a cikkben megtudhatjuk, hogyan lehet hatékonyan használni őket.

2. Új kommentárok

Jellemzően, ha az URL-kezelőt a hagyományos használatával akarjuk megvalósítani @RequestMapping kommentár, valami ilyesmi lett volna:

@RequestMapping (érték = "/ get / {id}", módszer = RequestMethod.GET)

Az új megközelítés lehetővé teszi ennek egyszerűsítését:

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

A Spring jelenleg ötféle beépített kommentárral támogatja a bejövő HTTP kérési módszerek különböző típusainak kezelését GET, POST, PUT, DELETE és TAPASZ. Ezek a jelölések a következők:

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

A névadási konvencióból láthatjuk, hogy minden annotáció a bejövő kérés módszerének megfelelő típusát hivatott kezelni, azaz @GetMapping kezelésére használják KAP a kérési módszer típusa, @PostMapping kezelésére használják POST a kérési módszer típusa stb.

3. Hogyan működik

A fenti feljegyzések mindegyike már belsőleg meg van jegyezve a @RequestMapping és a megfelelő érték a módszer elem.

Például, ha megnézzük a @GetMapping annotációval láthatjuk, hogy ezzel már meg van jelölve RequestMethod.GET a következő módon:

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

Az összes többi kommentár ugyanúgy jön létre, azaz @PostMapping jelöléssel van ellátva RequestMethod.POST, @PutMapping jelöléssel van ellátva RequestMethod.PUT, stb.

A kommentárok teljes forráskódja itt érhető el.

4. Végrehajtás

Próbáljuk meg ezeket a kommentárokat használni egy gyors REST alkalmazás felépítéséhez.

Kérjük, vegye figyelembe, hogy mivel a Maven-t használnánk a projekt felépítéséhez, a Spring MVC-t pedig az alkalmazásunk létrehozásához, hozzá kell adnunk a szükséges függőségeket a pom.xml:

 org.springframework spring-webmvc 5.2.2.KÖZLEMÉNY 

A legfrissebb verziója tavasz-webmvc elérhető a Central Maven Repository-ban.

Most létre kell hoznunk a vezérlőt a bejövő kérelem URL feltérképezéséhez. Ezen a vezérlőn belül ezeket a feliratokat egyenként használnánk.

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 ("Válasz törlése", HttpStatus.OK); }

4.5. @PatchMapping

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

Megjegyzendő megjegyzések:

  • A szükséges bejegyzéseket használtuk a bejövő HTTP módszerek URI-val történő kezeléséhez. Például, @GetMapping kezelni az „/ get” URI-t, @PostMapping kezelni az „/ post” URI-t és így tovább

  • Mivel REST-alapú alkalmazást készítünk, az alkalmazás egyszerűsítése érdekében egy állandó karakterláncot adunk vissza (minden kéréstípushoz egyedi) 200 válaszkóddal. A Spring-et használtuk @ResponseBody annotáció ebben az esetben.
  • Ha bármilyen URL-útváltozót kezelnünk kellene, egyszerűen megtehetjük azt sokkal kevesebb módon, mint korábban @RequestMapping.

5. Az alkalmazás tesztelése

Az alkalmazás teszteléséhez létre kell hoznunk néhány tesztesetet a JUnit használatával. Használnánk SpringJUnit4ClassRunner a tesztosztály megindításához. Öt különböző tesztesetet hoznánk létre az egyes kommentárok és minden kezelő tesztelésére, amelyet a vezérlőben deklaráltunk.

Tegyük le egyszerűen a példát @GetMapping:

@Test public void giventUrl_whenGetRequest_thenFindGetResponse () dobja a Kivételt {MockHttpServletRequestBuilder builder = MockMvcRequestBuilders .get ("/ get"); ResultMatcher contentMatcher = MockMvcResultMatchers.content () .string ("GET válasz"); this.mockMvc.perform (építő) .andExpect (contentMatcher) .andExpect (MockMvcResultMatchers.status (). isOk ()); }

Amint láthatjuk, állandó karakterláncra számítunkGET Response“, Ha egyszer eltaláltuk a KAP URL “/ get”.

Most hozzuk létre a tesztelést a teszteléshez @PostMapping:

@Test public void givenUrl_whenPostRequest_thenFindPostResponse () dobja a Kivételt {MockHttpServletRequestBuilder builder = MockMvcRequestBuilders .post ("/ post"); ResultMatcher contentMatcher = MockMvcResultMatchers.content () .string ("POST válasz"); this.mockMvc.perform (builder) .andExpect (contentMatcher) .andExpect (MockMvcResultMatchers.status (). isOk ()); }

Ugyanígy hoztuk létre a többi tesztesetet az összes HTTP módszer tesztelésére.

Alternatív megoldásként mindig használhatunk bármilyen közös REST klienst, például PostMan, RESTClient stb. Az alkalmazásunk teszteléséhez. Ebben az esetben kissé óvatosnak kell lennünk a megfelelő HTTP módszer típusának megválasztásában, miközben a többi klienst használjuk. Ellenkező esetben 405 hibaállapotot dobna.

6. Következtetés

Ebben a cikkben gyorsan bemutattuk a különböző típusokat @RequestMapping parancsikonok a gyors webfejlesztéshez a hagyományos tavaszi MVC keretrendszer használatával. Ezeket a gyorsparancsokat felhasználhatjuk egy tiszta kódalap létrehozásához.

Mint mindig, ennek az oktatóanyagnak a forráskódját is megtalálhatja a Github projektben.