스프링 컨트롤러에서는 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);
}
구웃
참고
'Spring > Spring Boot' 카테고리의 다른 글
@NoArgsConstructor 과 @RequiredArgsConstructor (0) | 2021.11.25 |
---|---|
@RequestBody - ajax Json 요청을 객체 응답으로 자동 변환 (0) | 2021.11.24 |
[Spring] Controller에서 html page return rendering 하기 (@RestController VS @Controller) (0) | 2021.11.23 |
[Spring] JPA Auditting 과 TimeStamp Class (createAt, UpdateAt 자동 기록) (0) | 2021.11.22 |
[Spring] 09. DI(의존성 주입) 과 IOC 컨테이너 (0) | 2021.11.12 |