웹 개발에서 클라이언트가 서버에 데이터를 전달하는 방법에는 여러 가지가 있다. 그 중에서 Path Variable과 Request Param은 자주 사용하는 방법인데, 이 두 가지는 특정 데이터를 전달하고 처리하는 방식에서 차이가 있다. 이번 글에서는 Path Variable과 Request Param을 사용하는 이유, 사용 방법, 장단점, 그리고 이 둘의 차이점을 살펴보겠다.
1. 왜 사용하는가?
Path Variable
Path Variable은 URL 경로의 일부로 데이터를 전달할 때 사용한다. 주로 리소스의 식별자(예: 사용자 ID, 상품 ID 등)를 전달하기 위해 사용된다.
- 예시: http://example.com/users/123
- 여기서 123이 Path Variable로, 이 값으로 특정 사용자 데이터를 조회할 수 있다.
왜 사용하는가?
- 리소스를 직관적으로 식별할 수 있어서 RESTful API 설계에 자주 사용된다.
- URL 경로 자체가 데이터를 포함하기 때문에, 사용자나 개발자가 직관적으로 이해하기 쉽다.
Request Param
Request Param은 URL의 쿼리 스트링을 통해 데이터를 전달하는 방식이다. 주로 필터링, 정렬, 페이지네이션 등의 옵션을 전달할 때 사용된다.
- 예시: http://example.com/users?name=john&age=25
- 여기서 name=john과 age=25는 Request Param으로, 이름이 'john'이고 나이가 25인 사용자를 필터링할 때 사용된다.
왜 사용하는가?
- 여러 개의 파라미터를 한 번에 전달할 수 있어, 복잡한 쿼리 조건이나 필터링을 처리하는 데 적합하다.
- 선택적 매개변수를 쉽게 추가할 수 있어, 다양한 경우에 대응할 수 있다.
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 설계와는 조금 다르다.
'SPRING&BOOT' 카테고리의 다른 글
캡슐화(Encapsulation) (0) | 2024.08.28 |
---|---|
API 명세서란? API 명세서 작성의 중요성과 방법 (0) | 2024.08.18 |
IoC (제어의 역전) 이해하기 (0) | 2024.08.13 |
의존성 주입 (DI, Dependency Injection) 이해하기 (0) | 2024.08.13 |
3 Layer Architecture (0) | 2024.08.12 |