Spring
Spring) Request - @Requestparam, @pathVariable ,@Requestbody
김코식
2022. 11. 30. 23:29
form 태그에서 데이터를 전달할 때 컨트롤러에서 데이터를 할당하는 대표적인 방법
- URL로 파라미터를 전달하는 방식
- @RequestParam
- @PathVariable
- 클라-서버 통신을 위해 xml이나 json 기반의 메시지 형식의 데이터를 주고받는 방식
- @RequestBody
@Requestparam
쿼리 스트링으로 파라미터를 URL로 전송받을 때
url 뒤에붙는 파라미터 값을 가져옴
ex) ? 이후의 key,value형태
(localhost:8080/hello-api?name=kim)
% 만약 RequestParam에 key값이 존재하지 않을 경우 erreor발생
이를 방지하기 위해 default 값 설정
(required = false,defaultValue="") // 값이 존재하지 않으면 default로 " " 값이 들어가게 된다.
@pathVariable
템플릿 변수의 값을 추출하고 그 값을 메소드 변수에 할당
url에서 각 구분자에 들어오는 값을 처리할 때 사용
ex)
@GetMapping("/api/memos/{id}")
public MemoResponseDto openMemo(@PathVariable Long id){
return memoService.openMemo(id);
@RequestBody
http 요청의 body가 담긴 값을 자바 객체로 변환
비동기 처리 구현시 @ResponseBody와 함께 사용
GET/POST의 요청 파라미터라면 사용하지 않아도 된다
ex)
@PostMapping("/api/memos")
public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto){
return memoService.createMemo(requestDto);
}
@Requestparam , @pathVariable 차이
pathVariable - 1개의 값만 가져옴
@Requestparam - key,value &으로 여러 데이터
ex)@Requestparam으로 여러 데이터 가져오기
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name,@RequestParam("num") int num){
Hello hello = new Hello();
hello.setName(name);
hello.setNum(num);
return hello;
}
url : (http://localhost:8080/hello-api?name=kim&name=in&num=1)
결과)
참고 자료