Spring

[Spring] Path Variable과 Query Parameter

누구세연 2024. 7. 18. 23:15

Spring Framework는 RESTful 웹 서비스 개발에 매우 적합합니다.

URL 경로를 통해 클라이언트와 서버 간의 데이터를 교환할 수 있습니다.

그중에서도 자주 사용되는 Path Variable과 Query Parameter의 차이점과 사용 방법에 대해 정리해 보겠습니다.🙂

 

Path Variable

path variable은 URL 경로의 일부로 사용되어 특정 리소스를 식별하는데 사용됩니다.

예를 들어, 특정 사용자의 정보를 가져오거나 특정 상품의 상세 정보를 조회할때 유용합니다.

  • URL 형식
    /resource/{id}
  • 사용 예시 (사용자 id가 123인 사용자 정보 조회)
    /users/123 
@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable("id") Long id) {
        // 사용자 조회 로직
        User user = userService.findById(id);
        return ResponseEntity.ok(user);
    }
}

@PathVariale 어노테이션을 사용하여 URL 경로의 변수를 메소드 매개변수로 매핑합니다.

이 방법을 통해 경로의 일부로 전달된 변수를 손쉽게 추출하여 사용할 수 있습니다.

 

Query Parameter

Query Parameter는 URL끝에 ? 뒤에 키-값 쌍으로 전달되는 추가 데이터입니다.

주로 필터링, 정렬, 페이징 등의 용도로 사용됩니다.

  • URL 형식
    /resource?key=value
  • 사용 예시 (20살 사용자들을 내림차순으로 정렬하여 조회)
    /users?age=20&sort=desc
@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping
    public ResponseEntity<List<User>> getUsers(
            @RequestParam(value = "age", required = false) Integer age,
            @RequestParam(value = "sort", defaultValue = "asc") String sort) {
        // 사용자 필터링 및 정렬 로직
        List<User> users = userService.findUsers(age, sort);
        return ResponseEntity.ok(users);
    }
}

@RequestParam 어노테이션을 사용하여 쿼리 매개변수를 메서드 매개변수로 매핑합니다.

required와 defaultValue 속성을 통해 필수 여부와 기본 값을 설정할 수 있습니다.

 

언제 사용하면 좋을까?

Path Variable 사용 시기

  • 리소스를 식별할 때 (예: 특정 사용자, 특정 주문 등)
  • RESTful API에서 리소스 경로를 명확히 할 때

Query Parameter 사용 시기

  • 데이터 필터링 (예: 특정 연령대 사용자 조회)
  • 데이터 정렬 (예: 내림차순, 오름차순 정렬)
  • 페이징 (예: 특정 페이지의 데이터를 조회)
  • 기타 추가적인 옵션을 제공할 때 (예: 검색 조건)

 

💡Path Variable은 리소스를 식별하는 데, Query Parameter는 필터링, 정렬, 페이징 등의 추가 정보를 전달하는 데 적합합니다.
Path variable과 QueyParameter는 각각의 용도에 맞게 사용하는 것이 중요합니다.