Red Glitter Pointer

 

Controller에서 사용하는 @RequestParam 어노테이션과 @PathVariable의 차이에 대해 작성해볼 예정이다!

 

 

 

@RequestParam과 @PathVariable의 공통점

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

 

 

 

 

@RequestParam과 @PathVariable의 차이점

값을 얻는 방식에서 차이가 있다! 

 

 

URI를 통해 값을 전달하는 방식은 아래와 같다.

 

1. http://localhost:8080/board?id=1

2. http://localhost:8080/board/1

 

 

  • 위 예시에서 첫번째와 같은 방식은, 쿼리스트링을 사용하여 여러 개의 값을 전달받기 때문에 @RequestParam을 통해 받아와야 한다.
  • 두번째 방식은 @PathVariable을 사용하여 받아올 수 있다.

 

 

 

@RequestParam

  • Query String으로부터 값을 얻는다. 🌟key = value 형태임
  • http://localhost:8080/board?id=1
@GetMapping("/board")
public ResponseEntity<ReadResponse> read(@RequestParam Long id) {
    BoardResponse response = BoardAssembler
        .readResponse(boardService.read(BoardAssembler.readRequestDto(id)));
    
    return ResponseEntity.ok(response);
}
  • get요청을 받으면 쿼리스트링을 통해 전달된 id값을 받아와서 @RequestParam이 파라미터인 Long id에 대입해준다.

@RequestParam의 4가지 파라미터

 

defaultValue : 값을 설정하지 않았을 때 기본값

name : 바인딩할 파라미터의 이름

value : name의 별칭

required : 필수 값 사용 여부 설정 (무조건 설정 해주어야 함.)

 

 

 

 

 

@PathVariable

  • URI path로부터 값을 얻는다
  • 어떤 요청이든 하나만 사용 가능! 🌟
  • @RequestParam과는 다르게 default 값을 설정하지 않는다.
  • http://localhost:8080/board/1
@GetMapping("/board/{id}")
public ResponseEntity<ReadResponse> read(@PathVariable Long id) {
    ReadResponse response = BoardAssembler
        .readResponse(boardService.read(BoardAssembler.readRequestDto(id)));

    return ResponseEntity.ok(response);
}

@PathVariable 의 3가지 파라미터

 

name : 바인딩할 파라미터의 이름

value : name의 별칭

required : 필수 값 사용 여부 설정 (무조건 설정 해주어야 함.)

 

 

 

 

 

정리 및 요약

  • @RequestParam과 @PathVariable은 둘 다 데이터를 받아오는 데 사용된다
  • @PathVariable은 값을 하나만 받아올 수 있으므로, 쿼리스트링을 이용하여 여러 개의 데이터를 받아올 땐 @RequestParam을 사용한다
  • default 값을 설정하고 싶을 땐 @RequestParam을 사용하면 된다.

 

 

+ Recent posts

loading