[Spring] @PathVariable ๊ทธ๋ฆฌ๊ณ @RequestParam
๐ ๊ฐ์
Spring์ผ๋ก Web Service๋ฅผ ๋ง๋ค๊ธฐ ์ํด Controller๋ฅผ ๋ง๋ค๊ฒ ๋๋ฉด Client์์ URI์ Parameter๋ก ์์ฒญ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒ์ด์์.
์ด ๋ ์๋ ๋ ๊ฐ์ง๋ฅผ ์ด์ฉํด์ ์์ฒญ์ ํ๊ฒ ๋๋๊ฒ ๋ํ์ ์ด๋๋๋ค.
์ฒซ์งธ : http//localhost?index=1&page=2
๋์งธ : http://localhost/index/1
์ฒซ๋ฒ์งธ์ ๊ฒฝ์ฐ Parameter์ ๊ฐ๊ณผ Key(name - ์ด๋ฆ)์ ํจ๊ป ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก Query String์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ๊ฒ์ํ ๋ฑ์์ Page ๊ฒ์ ๋ฐ ๊ฒ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ฒฝ์ฐ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ์ด์์.
๋๋ฒ์งธ ๊ฒฝ์ฐ๋ REST API์์ ๊ฐ์ ํธ์ถํ ๋, ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋๋๋ค.
๐ฝ @RequestParam
๊ฐ์์์ ์ฒซ๋ฒ์งธ์ ๊ฒฝ์ฐ @RequestParam์ ์ด์ฉํ๊ฒ ๋๋ ๊ฒ์ด์์.
์๋ ์์ ์ฝ๋์ ๊ฐ์ด Controller ์์ ์ด์ฉํ๊ฒ ๋๋ ๊ฒ์ด์์.
์์ ์ฝ๋
@GetMapping("/test")
public ModelAndView getFactoryRead(@RequestParam("no") int factroyId, SearchCriteria criteria) {
//...
} // getFactoryRead(@RequestParam("no") ๋
์ ๊ทธ๋ฆผ์ฒ๋ผ ์ ์๋ฅผ ํ ๋ค Front End์์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํด์ URI์ `/test?no=1`๊ณผ ๊ฐ์ด URI๊ฐ ์ ๋ฌ ๋ ๋, no Parameter๋ฅผ ๋ฐ์์ค๊ฒ ๋๋ ๊ฒ์ด์์.
์ด ์น๊ตฌ์ ์๊ดํธ ์์ ์ ๋ฌํ๊ณ ์ ํ๋ ์ธ์์ ์ด๋ฆ (์ค์ ๊ฐ)์ ์ ์ด์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
@RequestParam์ ๊ฒฝ์ฐ URI ๋ค์ ๋ถ๋ Parameter ๊ฐ์ ๊ฐ์ ธ์ฌ ๋, ์ด์ฉํ๋ต๋๋ค.
๐ฝ @PathVariable
๋๋ฒ์งธ์ ๊ฒฝ์ฐ @PathVariable์ ์ด์ฉํ๊ฒ ๋๋ ๊ฒ์ด์์.
์์ ์ฝ๋
@PostMapping("/test/{idx}")
@ResponseBody
public JsonResultVo postDeleteFactory(@PathVariable("idx") int idx) {
return factoryService.deleteFacotryData(factoryIdx);
} // postDeleteFactory(int factoryIdx) ๋
์์ ์์ ์ฝ๋์ฒ๋ผ `PathVariable`์ ๊ฒฝ์ฐ URI์์ ๊ฐ ๊ตฌ๋ถ์์ ๋ค์ด์ค๋ ๊ฐ์ ์ฒ๋ฆฌํด์ผ ๋ ๋ ์ด์ฉํ๋ ๊ฒ์ด์์.
๋ง์ฝ FrontEnd๊ฐ ์์ฒญ์ ๋ณด๋ผ ๋ `http://localhost:8080/test/1`๊ณผ ๊ฐ์ด ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ค๋ฉด {idx}์๋ 1์ด ๋ค์ด๊ฐ๊ฒ ๋๊ณ , Method ๋งค๊ฐ ๋ณ์๋ก 3์ด๋ผ๋ ๊ฐ์ด ๋ค์ด์ค๊ฒ ๋๋ ๊ฒ์ด์์.
๋ง์ฝ ์์ ๊ฐ์ด '1'์ ๋ฃ์ด์ฃผ์ง ์๊ณ , `http://localhost:8080/test/`์ด๋ ๊ฒ๋ง ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ Error๊ฐ ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด์์.
๋ง์ฝ์ `http://localhost:8080/test/` ์ด๋ ๊ฒ URI๋ฅผ ๋ณด๋ด๋ ๊ฒ๋ ํ์ฉํ๊ณ ์ ํ๋ค๋ฉด ์๋์ ๊ฐ์ด Controller๋ฅผ ์์ ํด ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
@PostMapping("/test/{idx}, "/test")
@ResponseBody
public JsonResultVo postDeleteFactory(@PathVariable("idx") int idx) {
return factoryService.deleteFacotryData(factoryIdx);
} // postDeleteFactory(int factoryIdx) ๋