IT Developer/Spring

Spring 기초 <8. Spring에서 RequestParam vs PathVariable 차이점>

TEMA_ 2025. 3. 25. 13:31
반응형

스프링 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의 차이 및 실무 적용법을 배워봅시다!

반응형