SPRING&BOOT

Path Variable과 Request Param

jki09871 2024. 8. 15. 21:50
웹 개발에서 클라이언트가 서버에 데이터를 전달하는 방법에는 여러 가지가 있다. 그 중에서 Path Variable과 Request Param은 자주 사용하는 방법인데, 이 두 가지는 특정 데이터를 전달하고 처리하는 방식에서 차이가 있다. 이번 글에서는 Path Variable과 Request Param을 사용하는 이유, 사용 방법, 장단점, 그리고 이 둘의 차이점을 살펴보겠다.

1. 왜 사용하는가?

Path Variable

Path Variable은 URL 경로의 일부로 데이터를 전달할 때 사용한다. 주로 리소스의 식별자(예: 사용자 ID, 상품 ID 등)를 전달하기 위해 사용된다.

왜 사용하는가?

  • 리소스를 직관적으로 식별할 수 있어서 RESTful API 설계에 자주 사용된다.
  • URL 경로 자체가 데이터를 포함하기 때문에, 사용자나 개발자가 직관적으로 이해하기 쉽다.

Request Param

Request Param은 URL의 쿼리 스트링을 통해 데이터를 전달하는 방식이다. 주로 필터링, 정렬, 페이지네이션 등의 옵션을 전달할 때 사용된다.

왜 사용하는가?

  • 여러 개의 파라미터를 한 번에 전달할 수 있어, 복잡한 쿼리 조건이나 필터링을 처리하는 데 적합하다.
  • 선택적 매개변수를 쉽게 추가할 수 있어, 다양한 경우에 대응할 수 있다.

2. 어떻게 사용하는가?

Path Variable 사용 방법

스프링에서 Path Variable을 사용하려면 @PathVariable 애너테이션을 사용한다. URL 경로에서 변수로 사용할 부분을 {}로 감싸서 지정한다.

@GetMapping("/users/{userId}")
public String getUserById(@PathVariable("userId") String userId) {
    return "User ID: " + userId;
}
  • 설명: 위 코드는 GET /users/{userId} 요청을 처리하며, URL에서 userId 값을 추출해 메서드 인자로 전달한다.

Request Param 사용 방법

Request Param을 사용하려면 스프링에서 @RequestParam 애너테이션을 사용한다. 쿼리 스트링에서 특정 키의 값을 가져온다.

@GetMapping("/users")
public String getUsersByName(@RequestParam("name") String name) {
    return "User Name: " + name;
}
  • 설명: 위 코드는 GET /users?name=john 요청을 처리하며, 쿼리 스트링에서 name 값을 추출해 메서드 인자로 전달한다.

3. 장점과 단점

Path Variable

  • 장점:
    • RESTful: 리소스를 명확하게 식별할 수 있어서 RESTful API 설계에 적합하다.
    • 직관적: URL 경로가 명확하게 나타나므로 이해하기 쉽다.
  • 단점:
    • 고정된 구조: URL 경로가 고정되므로, 다수의 선택적 매개변수 처리가 어렵다.
    • 복잡한 쿼리에는 부적합: 필터링, 정렬 등 복잡한 조건에는 적합하지 않다.

Request Param

  • 장점:
    • 유연성: 여러 개의 파라미터를 쉽게 전달할 수 있고, 선택적 매개변수도 쉽게 처리할 수 있다.
    • 복잡한 쿼리: 복잡한 필터링이나 검색 조건을 전달하는 데 적합하다.
  • 단점:
    • 읽기 어려움: URL이 길어질 수 있고, 모든 조건이 쿼리 스트링에 포함되어야 하므로 가독성이 떨어질 수 있다.
    • RESTful하지 않음: 리소스 식별보다는 상태나 조건을 전달하는 용도로 주로 사용되므로, RESTful 설계에는 부적합할 수 있다.

4. Path Variable과 Request Param의 차이점

핵심 차이점

  • 위치:
    • Path Variable: URL 경로의 일부로 포함된다.
    • Request Param: URL의 쿼리 스트링에 포함된다.
  • 사용 목적:
    • Path Variable: 특정 리소스를 식별하기 위해 사용된다.
    • Request Param: 필터링, 정렬, 페이지네이션 등 추가적인 조건을 전달하기 위해 사용된다.
  • RESTful 설계:
    • Path Variable: 리소스 중심의 RESTful API 설계에 적합하다.
    • Request Param: 상태나 필터링을 전달하는 데 사용되므로, 보통 RESTful 설계와는 조금 다르다.