@PathVariable vs @RequestParam (Query String)둘 다 클라이언트가 서버에 값을 전달할 때 사용되지만, URL 구조와 용도에서 차이가 있습니다.
@PathVariable (경로 변수)URL 경로에 값을 포함하여 전달할 때 사용
@GetMapping("/user/{id}")
public String getUserById(@PathVariable("id") Long userId) {
return "User ID: " + userId;
}
GET /user/123
123이 URL 경로의 일부로 전달됨 /user/{id} → 특정 사용자 조회) @RequestParam (Query String)URL의 쿼리 스트링(Query String)을 이용해 값을 전달할 때 사용
@GetMapping("/user")
public String getUser(@RequestParam("id") Long userId) {
return "User ID: " + userId;
}
GET /user?id=123
id=123이 Query String으로 전달됨 ?id=123&name=John) @PathVariable | @RequestParam | |
|---|---|---|
| 위치 | URL 경로 (/user/{id}) | Query String (/user?id=123) |
| 사용 목적 | 리소스 식별 (RESTful API) | 필터링, 검색, 정렬 등의 추가 정보 전달 |
| 필수 여부 | 기본적으로 필수 (경로가 없으면 404) | 기본적으로 선택적 (required=false 가능) |
| 예제 URL | /user/123 | /user?id=123 |
✅ 결론
@PathVariable → URL의 일부로 값을 전달할 때 사용 (RESTful API) @RequestParam → 쿼리 스트링으로 데이터를 전달할 때 사용 (필터링, 검색 등)