본문 바로가기
프레임워크/스프링

@RequestParam vs @PathVariable

by so5663 2022. 12. 29.

 

스프링 controller에서 사용하는 @RequestParam, @PathVariable를 기록하겠습니다.

 

uri를 통해 값을 전달할때 방식은 2가지가 있습니다.

- http://localhost:8000/board?type=post&page=1
- http://localhost:8000/board/post/1

 

첫번째 방식은 @RequestParam를 사용하는거고

두번째 방식은 @PathVariable 사용했습니다.

 

@RequestParam

@Controller
public class HomeController {    
    @RequestMapping("/board")
    public String checkId(@RequestParam("type") String type, 
    		@RequestParam(value = "page", required = false, defaultValue = "1") String page, Model model) {
        model.addAttribute("type", type);
        model.addAttribute("pwd", pwd);
        return "/board";
    }
}
  • value = uri에서 바인딩하게 될 값
  • required = false로해야 값이 없을때 에러가 나지 않습니다.
  • defaultValue = 값이 없을 때 기본값으로 사용할 값

 

@PathVariable

회사에서 RESTful API를 구현할때 주로 사용했던 방법이다.

@RestController
public class HomeController {    
    @PostMapping("/board/{type}/{page}")
    public String checkId(@PathVariable("type") String type, @PathVariable("page") int page) {
		
        return "Type: " + type + ", Page: " + page;
    }
}

 

정리

Path Variable은 REST API에서 값을 호출할 때 주로 사용되고,

Query Parameter (@RequestParam)는 게시판의 페이지 및 검색 정보를 전달하는 방식에서 많이 사용하는 편입니다.