Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

rudu_std

@RequestParam과 @PathVariable 본문

Spring & Spring Boot

@RequestParam과 @PathVariable

Ru_Du 2024. 8. 20. 22:19

@RequestParam , @PathVariable차이

위 2개의 어노테이션은 http의 비연결성을 극복하고 데이터를 전달하기 위한 방법들 중 하나로, 

uri를 통해 전달된 값을 파라미터로 받아오는 역할을 한다.

쓰임이 비슷하여 자칫 혼동될 수 있으니 비교해보겠습니다[ㅔ

쿼리스트링을 사용하여 여러개의 값을 전달하는 첫번째 방식은 @RequestParam을 통해 받아오고,

두번째 방식은 URL 경로의 일부를 변수로 받아서 @PathVariable을 사용하여 받아올 수 있다. 

 

@RequestParam 사용법

@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword, 
                     @RequestParam("page") int page) {
    return "Searching for " + keyword + " on page " + page;
}

Http 요청 파라미터의 이름으로 바인딩하여 그 값을 변수에 저장한다.

 

@GetMapping("/search")
public String search(@RequestParam String keyword, 
                     @RequestParam int page) {
    return "Searching for " + keyword + " on page " + page;
}

요청 파라미터 이름과 메서드 파라미터 이름이 같다면 @RequestParam의 value 속성을 생략할 수 있다.

 

@GetMapping("/search")
public String search(String keyword, int page) {
    return "Searching for " + keyword + " on page " + page;
}

요청 파라미터 이름과 메서드 파라미터 이름이 동일하면 @RequestParam을 완전히 생략할 수 있다.

 

 

@GetMapping("/search")
public String search(@RequestParam(required = true, defaultValue = "all") String keyword, 
                     @RequestParam(required = false, defaultValue = "1") int page) {
    return "Searching for " + keyword + " on page " + page;
}

@RequestParam에 required 옵션을 주어 true일 경우는 필수, false일 경우는 필수가 아닌 것으로 설정 가능하다.

required = false일 때 요청 파라미터에 값이 없으면 null이 저장된다.

 

만약 Integer 대신 int를 사용하게 된다면 오류가 발생하게 되어 주의해야 한다.

 

요청 파라미터 값이 없는 경우 defaultValue를 설정할 수 있다.

이 경우에는 null 대신 -1이 저장되게 되어 int를 사용할 수 있다.


@PathVariable 사용법

@RestController
public class UserController {

    @GetMapping("/users/{id}")
    public String getUserById(@PathVariable String id) {
        return "User ID: " + id;
    }
}

 

위 예제에서 /users/123로 요청이 들어오면 id는 123이 되고 "User ID: 123"이라는 응답이 반환된다.

 

 

@GetMapping("/users/{userId}/orders/{orderId}")
public String getOrderForUser(@PathVariable String userId, @PathVariable String orderId) {
    return "User ID: " + userId + ", Order ID: " + orderId;
}

이 예제에서는 /users/1/orders/100 같은 요청에서 userId = 1, orderId = 100 으로 처리된다.

 

 

@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") String userIdentifier) {
    return "User ID: " + userIdentifier;
}

URL 경로 변수와 메서드 파라미터 이름이 다를 때는 value 속성을 사용해 매핑할 수 있다.

 

 


 

'Spring & Spring Boot' 카테고리의 다른 글

ResponseEntity  (0) 2024.08.25
@RestController, @Controller  (0) 2024.08.20
REST API란 무엇인가?  (0) 2024.08.20
@PathVariable과 @RequestParam  (0) 2024.08.20
Spring DI && IoC  (0) 2024.08.08