https://elfinlas.github.io/2018/02/18/spring-parameter/
https://willbesoon.tistory.com/102
https://charliecharlie.tistory.com/263
참고자료
@RequestParam과 @RequestBody, @PathVariable 모두 form 태그에서 데이터를 전달할 때 컨트롤러에서 데이터를 인자에 할당하는 대표적인 방법이다.
Type 1 => http://127.0.0.1?index=1&page=2
Type 2 => http://127.0.0.1/index/1
Type 1의 경우 파라메터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 사용할 때 많이 사용한다.
Type 2의 경우 Rest api에서 값을 호출할 때 주로 많이 사용한다.
@RequestParam
- 전달받은 데이터를 URI상에서 찾는다.
- Type 1의 URI를 처리할 때 사용한다.
- GET 방식으로 넘어온 URI의 queryString을 받기 적절하다.
- @RequestBody로 데이터를 받을 경우 메소드의 파라미터명이 상관 없지만 @RequestParam으로 데이터를 받을 때는 데이터를 저장하는 이름으로 메소드의 파라미터명을 설정해줘야 한다.
- 해당하는 데이터만 받아올 수 있다. (@RequestBody는 객체를 받아옴)
- ex) http://localhost:8080/receive?name=jun&age=13
@PathVariable
- URI 경로의 일부를 파라미터로 사용할 때 이용한다.
- 템플릿 변수의 값을 추출하고 그 값을 메소드 변수에 할당한다.
- Type 2의 Rest api에서 값을 호출할 때 주로 사용한다.
@RequestBody
- http 요청의 body에 담긴 값을 자바 객체로 변환한다.
- 비동기 처리 구현시 @ResponseBody와 함께 사용한다.
- 일반적인 GET/POST의 요청 파라미터라면 @RequestBody를 사용하지 않아도 된다.
- xml이나 json 기반의 메시지를 사용하는 요청의 경우 유용하다.
- ex) http://localhost:8080/receive
@RequestBody | @RequestParam | |
객체 생성 | 가능 | 불가능 |
각 변수별로 데이터 저장 | 불가능 | 가능 |
@RequestParam query 처리
@PathVariable URI 변수 처리
@RequestBody JSON 처리
'Back-end > Spring Boot' 카테고리의 다른 글
ResponseEntity란? (0) | 2021.10.12 |
---|---|
@RequestBody와 @ResponseBody (0) | 2021.10.07 |
Spring Boot - REST API - 학습필요 (0) | 2021.10.07 |
Spring Boot 특징 (0) | 2021.10.06 |