심화/Spring

[Spring] PathVariable과 RequestParam

annovation 2025. 9. 24. 09:40

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 VS RequestParam

💡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