스프링 Spring
8. Spring에서 RequestParam vs PathVariable 차이점
안녕하세요! 태마입니다.
Spring 기초 강좌입니다.
강좌의 경우
1. 주제 간단 정리
2. 상세 주제 정리
으로 이루어져 있습니다.
스프링 Spring

포스팅 시작하겠습니다 :)
1. 주제 간단 정리
1. @RequestParam과 @PathVariable이란?
✔ Spring MVC에서는 클라이언트가 서버로 요청을 보낼 때 URL을 통해 데이터를 전달
✔ 주로 @RequestParam과 @PathVariable을 사용하여 요청 데이터를 컨트롤러에서 처리
📌 각 방식의 주요 특징
어노테이션특징사용 방식
@RequestParam | 쿼리 스트링(Query String) 또는 폼 데이터를 받아옴 | GET /users?id=1 |
@PathVariable | URL 경로의 일부 값을 변수로 받아옴 | GET /users/1 |
📌 @RequestParam은 "쿼리 파라미터를 처리하는 데 사용"되며, @PathVariable은 "URL 경로 변수 값을 처리하는 데 사용"됨.
2. @RequestParam – 쿼리 스트링(Query String) 방식
✔ 쿼리 파라미터는 URL 뒤에 ?를 사용하여 데이터를 전달하는 방식
✔ 주로 필터링, 검색, 페이지네이션 등에 사용됨
📌 @RequestParam을 활용한 컨트롤러 예제
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping
public String getUserById(@RequestParam(name = "id") Long id) {
return "User ID: " + id;
}
}
📌 클라이언트 요청 예시
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping
public String getUserById(@RequestParam(name = "id") Long id) {
return "User ID: " + id;
}
}
📌 응답 결과
GET /users?id=1
✔ 쿼리 스트링에서 id=1 값을 @RequestParam을 통해 컨트롤러 메서드의 매개변수로 전달함
📌 @RequestParam은 "필수 파라미터 설정, 기본값 지정, 여러 개의 값 전달"이 가능함.
3. @PathVariable – URL 경로 변수 방식
✔ URL 경로의 일부를 변수로 사용하여 데이터를 전달하는 방식
✔ 리소스를 식별할 때 주로 사용됨 (예: 사용자 ID, 상품 ID 등)
📌 @PathVariable을 활용한 컨트롤러 예제
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public String getUserById(@PathVariable Long id) {
return "User ID: " + id;
}
}
📌 클라이언트 요청 예시
GET /users/1
📌 응답 결과
User ID: 1
✔ URL의 경로 일부를 변수처럼 사용하여 데이터를 컨트롤러에서 처리 가능
📌 @PathVariable은 "리소스를 명확히 식별하는 데 유용하며, RESTful API 설계에서 자주 사용됨."
✅ 여기까지 @RequestParam과 @PathVariable의 기본 개념을 배웠습니다!
👉 "그렇다면, 두 방식의 차이점은 무엇일까?"
✅ 2부에서 @RequestParam과 @PathVariable의 차이점과 실무 활용법을 배워봅시다!
2. 상세 주제 정리
1. @RequestParam vs @PathVariable 차이점 비교
✔ 두 방식은 요청 데이터를 처리하는 방법이 다름
📌 @RequestParam vs @PathVariable 비교표
비교 항목@RequestParam@PathVariable
데이터 전달 방식 | 쿼리 스트링 (?key=value) | URL 경로 (/users/{id}) |
주요 사용 사례 | 필터링, 검색, 페이지네이션 | 특정 리소스 조회 (ID 기반) |
선택적 파라미터 지원 | 기본값 설정 가능 (defaultValue 사용) | 항상 URL에 포함되어야 함 |
여러 개의 값 전달 | 배열(List)로 여러 개 값 전달 가능 | 여러 개의 PathVariable을 사용 가능 |
RESTful API 적용 여부 | RESTful 규칙과 무관 | RESTful API 설계에 적합 |
📌 @RequestParam은 "유연한 요청 처리"에 적합하고, @PathVariable은 "리소스를 식별하는 API"에 적합함.
2. 실무에서 @RequestParam과 @PathVariable 활용법
📌 예제 1: @RequestParam을 활용한 검색 기능
@GetMapping("/search")
public String searchUsers(@RequestParam String keyword) {
return "Search results for: " + keyword;
}
✔ GET /users/search?keyword=John 요청을 보내면 "Search results for: John"을 반환
📌 예제 2: @PathVariable을 활용한 사용자 상세 조회
@GetMapping("/{id}")
public String getUserDetail(@PathVariable Long id) {
return "User Details for ID: " + id;
}
✔ GET /users/1 요청을 보내면 "User Details for ID: 1"을 반환
📌 예제 3: @RequestParam과 @PathVariable을 함께 사용
@GetMapping("/{id}/orders")
public String getUserOrders(@PathVariable Long id, @RequestParam int page) {
return "Orders for User ID: " + id + ", Page: " + page;
}
✔ GET /users/1/orders?page=2 요청을 보내면 "Orders for User ID: 1, Page: 2"를 반환
📌 실무에서는 "리소스를 식별할 때는 @PathVariable을, 부가적인 필터링 옵션을 줄 때는 @RequestParam을 사용"하는 것이 일반적임.
✅ 여기까지 @RequestParam과 @PathVariable의 차이점과 실무 활용법을 배웠습니다!
👉 "그렇다면, Spring에서 DTO, Entity, VO의 차이는?"
✅ 다음 회차에서 Spring에서 DTO, Entity, VO의 차이 및 실무 적용법을 배워봅시다!