PathVariable과 RequestParam
Client(브라우저)에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있고, 서버에서는 이 데이터를 받아서 사용할 수 있다. Spring에서는 이런 데이터를 전달받는 대표적인 방법으로 PathVariable과 RequestParam을 제공한다.
PathVariable
💡PathVariable
GET http://localhost:8080/hello/request/star/Robbie/age/95
- URL 경로 자체에 데이터를 포함시켜 서버로 전달하는 방식
- 주로 특정 리소스를 식별할 때 사용된다.
💡Controller 코드 사용 예시
@GetMapping("/star/{name}/age/{age}")
@ResponseBody
public String helloRequestPath(@PathVariable String name, @PathVariable int age) {
return String.format("Hello, @PathVariable.<br> name = %s, age = %d", name, age);
}
- /star/{name}/age/{age}
- 데이터를 받기 위해, URL 경로에서 데이터를 받고자 하는 위치의 경로에 {data} 형태로 작성
- (@PathVariable String name, @PathVariable int age)
- 해당 요청 메서드 파라미터에 @PathVariable 애너테이션과 함께 {name} 중괄호에 선언한 변수명과 변수타입을 선언하면 해당 경로의 데이터를 받아올 수 있다.
RequestParam
💡RequestParam
GET http://localhost:8080/hello/request/form/param?name=Robbie&age=95
- URL의 쿼리 파라미터로 데이터를 전달하는 방식
- 서버에 보내려는 데이터를 URL 경로 마지막에 ? 와 & 를 사용하여 추가 가능
- ? 이후에 오는 부분이 쿼리 스트링(Query String)이고, 그 안에 &로 구분되어 있는 key=value 쌍들이 쿼리 파라미터(Query Parameter)이다.
- 검색 조건, 필터링, 페이징 등에 자주 사용된다.
💡Controller 코드 사용 예시
@GetMapping("/form/param")
@ResponseBody
public String helloGetRequestParam(@RequestParam String name, @RequestParam int age) {
return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
}
- ?name=Robbie&age=95
- 데이터를 받기 위해서는 key 부분에 선언한 name과 age를 사용하여 value에 선언된 Robbie, 95 데이터를 받아올 수 있다.
- (@RequestParam String name, @RequestParam int age)
- 해당 요청 메서드 파라미터에 @RequestParam 애너테이션과 함께 key 부분에 선언한 변수명과 변수타입을 선언하면 데이터를 받아올 수 있다.
💡@RequestParam 생략
// [Request sample]
// GET http://localhost:8080/hello/request/form/param?name=Robbie&age=95
@GetMapping("/form/param")
@ResponseBody
public String helloGetRequestParam(@RequestParam(required = false) String name, int age) {
return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
}
- @RequestParam(required = false)
- @RequestParam은 생략 가능
- Client로 부터 값을 전달 받지 못한 해당 변수는 null로 초기화된다.
💡용어 정리
🔎 쿼리(Query)
- 조건이 있는 요청이라는 개념
🔎 파라미터(Parameter)
- 주어진 범위 안에서 변할 수 있는 값
- 수학에서는 함수 f(x)에서 x 같은 게 파라미터
- 무언가를 조정하거나 조건을 전달하는 값
🔎 쿼리 스트링(Query String)
http://example.com/search?keyword=java&page=2&sort=desc
- URL에서 ? 뒤에 오는 전체 문자열
- 서버에 전달하는 모든 추가 정보 덩어리
- 위 예시에서는 keyword=java&page=2&sort=desc 👉 이게 바로 쿼리 스트링
🔎 쿼리 파라미터(Query Parameter)
- 쿼리 스트링을 &로 잘라서 나오는 각각의 key=value 조각
정리

💡PathVariable
- URL 경로 자체가 리소스를 지정
- ex. /users/10 = 10번 유저라는 하나의 특정 리소스 요청
- 여기서 10이 바뀌면 다른 리소스를 요청하는 것으로 바뀜
💡RequestParam
- URL의 리소스를 바꾸지 않고도, 옵션처럼 조건을 전달할 수 있음
- ex. /uesrs?age=20 = '모든 사용자 목록'이라는 리소스는 동일, 거기에 '나이가 20살'이라는 조건을 붙인 것
- /users 라는 리소스는 변하지 않고, 응답 결과만 달라진다.
출처
https://teamsparta.notion.site/1-14-Path-Variable-Request-Param-2252dc3ef51481fbb94deb35ca002886
챕터1-14 : Path Variable과 Request Param | Notion
Path Variable
teamsparta.notion.site
'심화 > Spring' 카테고리의 다른 글
| [Spring] DTO란? (0) | 2025.09.26 |
|---|---|
| [Spring] HTTP 데이터를 객체로 처리하는 방법 (0) | 2025.09.25 |
| [Spring] Spring MVC란? (0) | 2025.09.23 |
| [Spring] HTTP란 무엇일까? (1) | 2025.09.22 |
| [Spring] Apache Tomacat이란 무엇일까? (0) | 2025.09.18 |