Spring boot

[Spring boot] @RequestParam과 @PathVariable

Anna-Jin 2022. 1. 28. 11:45
728x90

스프링 부트를 사용하면서 컨트롤러를 만들 때, 파라미터를 넘겨받는 방법으로 @RequestParam만 알고있었는데 또 다른 방법인 @PathVariable이 있다는 걸 알게되어 두가지 모두 정리해보고자 한다.

 

@RequestParam

단일 파라미터를 받아올 때 사용하는 어노테이션이다.

@GetMapping("/search_user")
    public UserDto searchUser(
            @RequestParam("name") String name,
            @RequestParam(value = "age", required=true) int age // 위와 같음
    ) {
        return userService.getUser(index);
    }

메소드 파라미터 값을 넣는 괄호 안에 위와 같이 사용할 수 있다.

위 코드를 보면 알 수 있듯이 @RequestParam의 required는 true가 기본값이다.

이 경우에는 파라미터를 필수로 받아와 에러가 나지 않는다.

 

그럼 파라미터를 필수로 받아오지 않는 경우에는? 

@RequestParam(value="index", required=false) Integer index

 

required를 false로 설정하면 된다.

 

이렇게 @RequestParam어노테이션을 사용하면 요청할 때 맨 뒤에 ?와 함께 파라미터값을 넣어주면 된다.

http://localhost:8080/search_user?name=븨나네&age=20

 

 

@PathVariable

URI를 더 깔끔하게 사용하는 방식이다.

@GetMapping("/search_user/{index}")
    public UserDto searchUser(
            @PathVariable("index") int index
    ) {
        return userService.getUser(index);
    }

@GetMapping(다른 어노테이션 모두 사용 가능) 어노테이션 path에 {변수명}을 추가해주고

@RequestParam과 동일하게 사용하면 된다.

 

그럼 아래와 같이 요청을 받을 수 있다.

http://localhost:8080/user/1

 

 

++ 

실무에서는 두가지 어노테이션을 복합적으로 사용한다고 하니 두가지 모두 알아두는 게 좋을 것 같다!

728x90