SOLUX-완숙이

@RequestParam과 @PathVariable, @RequestBody의 차이

leeeehhjj 2022. 1. 4. 13:42

이 어노테이션들은 controller에서 프론트로부터 파라미터를 전달받을 때 사용하는 어노테이션들이다.

 

1. @RequestParam

@GetMapping("club")
    public ClubResponseDto findById(@RequestParam(value = "id") Long id) {
        return clubService.findById(id);
    }

api 요청 시에 URI에 http://localhost:8080/club?id=2 이렇게 queryString 방식으로 넣어주는 것이다.

@RequestParam(value = "id" , required=false) 이렇게 쓰면 id값을 넣어주지 않아도 오류가 발생하지 않는다.

 

2. @PathVariable

@GetMapping("/api/udong/club/{id}")
    public ClubResponseDto findById(@PathVariable Long id) {
        return clubService.findById(id);
    }

이처럼 api 요청 시에 URI에 http://localhost:8080/api/udong/club/2 이런 식으로 값을 넣어 id 값 = 2 라는 정보를 전달해주는 것이다.

 

3. @RequestBody

@PostMapping("/api/udong/club")
    public Long save(@RequestBody ClubSaveRequestDto requestDto) {
        return clubService.save(requestDto);
    }

예를들어 프론트에서 

{

  "id":2,

  "name":"hello"

}

이런 json 형식의 데이터를 서버로 보내주면 이를 받아서 자바 객체 형태로 매핑해준다.