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을 사용하면 된다.
'Backend > Spring' 카테고리의 다른 글
| [JPA] 값 타입 컬렉션 사용법 (@ElementCollection, @CollectionTable) (2) | 2024.01.26 |
|---|---|
| [Spring Security] Spring Security 정리 (0) | 2024.01.21 |
| [Spring] @Size, @Column(length), @Length의 차이점 (2) | 2024.01.03 |
| [Spring Boot] JPA log 설정 (0) | 2023.12.30 |
| [Spring] DAO, DTO, VO, Entity 개념 정리 (2) | 2023.12.29 |