on
[@RequestParam Vs @PathVariable] - Spring URL 파라미터 값 받아오기
[@RequestParam Vs @PathVariable] - Spring URL 파라미터 값 받아오기
스프링 컨트롤러에서는 URL 파라미터값을 받아오는 2가지 방법이 있다.
이건 URL 파라미터를 어떤 방식으로 넘겨주는냐에 따라 혼합적으로 사용해주면 될 것 같다.
URL에 파리미터값을 전달하는 2가지 경우
Case 1 ) http://xxx.x.x?index=1&page;=2 Case 2 ) http://xxxx.x.x/index/1
첫번째 URL의 경우 파라미터 값과 이름을 같이 전달하는 방식으로 @RequestParam을 사용한다.
두번째 방식 URL에 변수값을 포함해서 넘겨주는 방식으로 Rest API에서 값을 호출하는 경우 주로 많이 사용되며 @PathVariable 을 사용한다.
| @RequestParam이란?
@GetMapping("getDriver") public String viewName( @RequestParam("name") String name, @RequestParam("name2") String name2){ //위처럼 하나 이상의 타입을 적용할 수 있습니다. //스플잉에서 지원하는 변환기에서 지원되는 모든타입을 변환가능합니다. //RequesParam은 하나 이상 파라미터에서 사용 가능합니다. }
이런 방식으로, "@RequestParam("실제 값") String 설정할 변수 이름" 사용된다.
RequestParam key 값이 존재하지 않는 경우 400 번대 에러가 뜨는데 이를 방지하고, 디폴트 값을 변수에 넣어주고 싶은 경우는,
"DefaultValue"를 이용하여 기본 값을 설정해줍니다.
( " required=false " 속성을 꼭 명시해줘야 합니다. )
@GetMapping("getDriver") public String viewName( @RequestParam("name",required=false,defaultValue="") String name, @RequestParam("name2",required="false,defaultValue="") String name2){ //이런식으로 defaultValue를 지정하려면 required 속성을 명시해줘야 합니다. }
| @PathVariable이란?
Case2 방식을 이용할 때 사용한다.
@PostMapping("delete/{idx}") @ResponseBody public void testMethod(@PathVariable("idx") int id ){ return testService.deleteId(id); }
위의 예제처럼 PathVariable 의 경우 url에서 각 구분자에 들어오는 값을 처리해야 할 때 사용합니다.
변수인자가 하나면 이렇게도 가능한 것 같다,
@GetMapping("/article/{id}") public Article getArtiles(@PathVariable Long id){ return articleService.getArticles(id); }
구웃
참고
https://2ham-s.tistory.com/290
728x90
반응형
from http://thalals.tistory.com/222 by ccl(A) rewrite - 2021-11-23 20:27:52