[SpringBoot] @RequestBody, @RequestParam, @PathVariable 정리
Intro
자주 사용하던 어노테이션인 RequestBody, RequestParam, PathVariable의 차이를 명확하게 정리하기 위해 정리한다.
@RequestBody
- RequestBody는 HTTP 요청이 들어왔을 때 Body에 담긴 값을 자바 객체로 변환 해주는 어노테이션이다.
- 비동기 처리(AJAX)를 할 때 사용한다.
- xml, json 기반 메시지를 사용하는 요청의 경우 유용하다.
@RequestParam
- RequestParam는 HTTP 요청이 들어왔을 때 URI의 queryString에 붙은 name=value 형태의 값을 받을 때 사용하는 어노테이션이다.
- 예시 : http://localhost:8080/user=1&page=1
- 예시의 요청이 들어오면 user라는 변수와 page라는 변수를 받을 때 사용 가능함.
@PathVariable
- REST API에서 요청이 들어올 때 URI에 가변형 변수 부분을 받는 어노테이션이다.
- 여기서 변수뒤에 오는 값과 매핑 주소의 변수명과 동일해야 함.
- 예시 : http://localhost:8080/api/user/1
- 코드
1 2 3 4 5 6
@GetMapping("/api/user/{id}") public void findById(@PathVariable int id) { // int id == {id} 변수명이 같아야 함. System.out.println("id:" + id); // 출력 => id: 1 }
결론
- 쿼리스트링에 붙은 변수를 받기 위해서는 @RequestParam을 사용한다.
- Post로 전송 시 자바 객체(ex, User 객체)로 받기 위해서는 @RequestBody를 사용한다.
- JSON, AJAX를 사용할 때 @RequestBody를 사용한다.
- API 요청이 있을 때 변수를 사용하고 싶다면 @PathVariable을 사용한다.