Web/스프링부트(SpringBoot Framework)

(3) @RequestParam과 @PathVariable 차이점

심플블루 2024. 7. 15. 19:18
반응형
Spring 프레임워크에서 @RequestParam과 @PathVariable 어노테이션은 모두 컨트롤러 메서드에서 요청 파라미터를 처리하는 데 사용되지만, 그 목적과 사용 방식이 다릅니다. 각각의 차이점을 자세히 설명하겠습니다.

 

@RequestParam

  • 용도: HTTP 요청 파라미터를 메서드 매개변수에 바인딩할 때 사용합니다. 주로 쿼리 스트링 또는 폼 데이터에서 파라미터를 추출할 때 사용됩니다.
  • 사용 예: URL에 포함된 쿼리 파라미터나 폼 데이터에서 값을 추출할 때.
  • 기본값: 제공하지 않으면 기본값을 설정할 수 있습니다. 파라미터가 필수가 아닐 경우 required = false로 설정할 수 있습니다.

예시코드:

@GetMapping("/api/users")
public String getUserByRequestParam(@RequestParam("id") String userId) {
    // id 파라미터를 통해 전달된 값을 사용
    return "User ID: " + userId;
}
  • 요청 URL: /api/users?id=123

 

@PathVariable

  • 용도: URI 경로의 일부를 메서드 매개변수에 바인딩할 때 사용합니다. RESTful API에서 자원의 식별자를 URL 경로의 일부로 포함시킬 때 주로 사용됩니다.
  • 사용 예: URL 경로에 포함된 변수 값(경로 변수)을 추출할 때.
  • 기본값: 기본값을 설정할 수 없으며, 경로 변수는 필수입니다.

예시코드:

@GetMapping("/api/users/{id}")
public String getUserByPathVariable(@PathVariable("id") String userId) {
    // 경로 변수로 전달된 값을 사용
    return "User ID: " + userId;
}
  • 요청 URL: /api/users/123

 

차이점 요약

  1. 위치:
    • @RequestParam: 쿼리 스트링 또는 폼 데이터에서 추출합니다.
    • @PathVariable: URL 경로에서 추출합니다.
  2. 형식:
    • @RequestParam: ?key=value 형식으로 전달됩니다.
    • @PathVariable: 경로의 일부로 전달됩니다.
  3. 필수 여부:
    • @RequestParam: 기본값을 설정하거나 required = false로 설정할 수 있습니다.
    • @PathVariable: 경로 변수는 필수이며, 기본값을 설정할 수 없습니다.

 

예시 비교

@RequestParam 사용:

// URL: /api/items?id=100&name=book
@GetMapping("/api/items")
public String getItem(@RequestParam("id") int id, @RequestParam("name") String name) {
    return "Item ID: " + id + ", Item Name: " + name;
}

 

@PathVariable 사용:

// URL: /api/items/100/book
@GetMapping("/api/items/{id}/{name}")
public String getItem(@PathVariable("id") int id, @PathVariable("name") String name) {
    return "Item ID: " + id + ", Item Name: " + name;
}

 

이 두 어노테이션을 잘 활용하면, HTTP 요청에서 필요한 데이터를 유연하게 추출하여 사용할 수 있습니다.


@RequestParam

  • 용도: 쿼리 스트링 또는 폼 데이터에서 요청 파라미터 추출.
  • 예시: @RequestParam("id") String id (URL: /api/users?id=123)

@PathVariable

  • 용도: URL 경로의 일부에서 경로 변수 추출.
  • 예시: @PathVariable("id") String id (URL: /api/users/123)

차이점 요약

  • 위치: @RequestParam은 쿼리 스트링, @PathVariable은 URL 경로.
  • 형식: @RequestParam은 ?key=value, @PathVariable은 경로 변수.
  • 필수 여부: @RequestParam은 기본값 설정 가능, @PathVariable은 필수.
반응형