@RequestParam 은 URL 의 쿼리 스트링에 값을 담는다.
예를 들어 ?name=홍길동 처럼 파라미터가 붙는 방식이다.
반면 @PathVariable 는 URL 경로 자체에 변수를 넣는다.
/users/{id} 에서 {id} 위치에 값을 채우는 방식이다.
쿼리 스트링은 여러 개를 동시에 받을 수 있다.
경로 변수는 URL 구조에 딱 맞는 값만 들어간다.

1. @RequestParam
@GetMapping("/search")
public String search(@RequestParam String query) {
return "검색 결과: " + query;
}
이 코드는 GET 요청 시 ?query=스프링 을 받는다.
쿼리 스트링은 여러 파라미터를 나열할 수 있다.
예를 들어 ?query=스프링&sort=asc 가 가능하다.
검색 필터나 페이지 번호 같은 값에 주로 쓴다.
URL 길이가 너무 길어지면 브라우저가 제한한다.
2. @PathVariable
@GetMapping("/users/{userId}")
public String getUser(@PathVariable String userId) {
return "사용자: " + userId;
}
이 코드는 /users/john 처럼 경로에 값을 넣는다.
경로 변수는 URL 구조의 필수 요소처럼 보인다.
RESTful API 설계 시 리소스 식별자에 쓴다.
경로에 없는 값이 들어오면 404 에러가 된다.
URI 가 길어지지 않아서 깔끔한 구조를 만든다.
3. 두 가지 비교
// 쿼리 스트링
?user=홍길동&role=admin
// 경로 변수
/users/123/orders
RequestParam 은 검색이나 필터링에 적합하다.
PathVariable 는 특정 리소스를 찾을 때 쓴다.
동시에 두 가지 방식을 혼용할 수도 있다.
예를 들어 /users/{id}/orders?status=pending 이다.
경로에 사용자 ID 를 넣고 쿼리에 상태 값을 넣는다.
상황에 맞게 적절한 방식을 선택해야 한다.
'개념 창고 > Spring' 카테고리의 다른 글
| [Spring] @Component, @Service, @Repository 차이 (0) | 2026.10.15 |
|---|---|
| [Spring] MyBatis의 Query 수정 후 WAS서버 재시작없이 반영하기 (0) | 2024.07.23 |
| Junit Test (0) | 2023.02.08 |
| Spring 컨테이너에 빈을 등록하는 3가지 방법 (0) | 2023.02.08 |