우리는 Path Varaible과 Request Param은 차이가 있다는 것을 분명히 알고있습니다.
이 두가지의 차이점을 정리하려고 합니다.
보통 사용방식의 관점에서 비교가 많이 되는데,
사용의도 관점에서도 차이점을 알아보려고 합니다.
Path Variable과 Request Param은 둘 다 HTTP 요청에서 url로 데이터를 전달하는 방법이지만,
사용 목적과 상황에 따라 적합성이 달라집니다.
Path Variable
보통 path variable은, URL 경로의 일부로 데이터를 전달하는 방식입니다.
보통 아래와 같은 방식을 많이 사용합니다.
/users/{userId}
/users/{userId}/orders/{orderId}
#example
/users/20
/users/20/orders/30
경로 자체에 데이터가 포함되므로, 리소스의 식별자로 사용됩니다.
주로 RESTful API 설계에서 특정 리소스를 지칭할 때 유용합니다.
필수적인 값으로 간주되며, 값이 없으면 요청이 잘못된 것으로 처리될 가능성이 높습니다.
보통 특정 사용자, 게시글을 조회할 때 많이 사용되고,
URL 자체로 명확한 의미를 전달하고 싶을 때, 많이 사용됩니다.
Request Params
쿼리 스트링으로 데이터를 전달하는 방식입니다.
/users?userId=123&username="sdf"
# Request Param
userId=123, username="sdf"
키-값 쌍으로 전달되며, 주로 필터링, 검색 조건, 선택적 파라미터를 전달할 때 사용됩니다.
필수가 아닌 경우가 많고, 기본값을 설정할 수 있어 유연합니다.
-> Springboot에서는 @RequestParam(required=false)
URL에 노출되고, path variable 보다는 구조화가 덜 되어 있습니다.
Pathvariable과는 다르게 여러개의 데이터를 전달 할 수 있는데,
이러한 점은, 필터링, 검색 과 같이 복잡한 데이터를 전달해줘야 할 때 유리합니다.
# 검색 조건 전달: 데이터를 필터링하거나 정렬할 때
/products?category=electronics&sort=price
# 선택적 파라미터: 필수가 아닌 옵션 값을 전달할 때
/users?page=2&limit=10
# 복잡한 쿼리: 여러 조건을 조합해야 할 때
/search?keyword=book&priceMin=10&priceMax=50
'Back-End' 카테고리의 다른 글
Kafka를 사용하는 이유 (0) | 2025.03.28 |
---|---|
MSA에서 SAGA Pattern을 사용하는 이유 (0) | 2025.03.28 |
MSA에서 멀티모듈을 도입하게된 이유 (멀티레포, 모노레포, SpringBoot) (0) | 2025.03.16 |
대규모 시스템을 설계하기 전에 고려해봐야 할 것들 (0) | 2025.03.12 |
MSA란 무엇일까? (spring cloud, eureka, feignclient, ribbon, resilience4j (0) | 2025.02.15 |