@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.