14.2.1 @RequestBody
@RequestBody 애너테이션은 HTTP 요청 body 내용인 XML, JSON 또는 기타 데이터 등을 자바 객체로 매핑하는 역할을 합니다. 일반적으로 폼 페이지에서 전송되는 매개변수가 name=value 형태이면 @RequestParam이나 @ModelAttribute로 전달받습니다. 하지만 XML이나 JSON처럼 형식을 갖춘 문자열 형태라면 @RequestParam이나 @ModelAttribute로 전달받을 수 없기 때문에
@RequestBody를 이용해야 합니다.
@RequestBody는 컨트롤러 내에 요청 처리 메서드의 매개변수에 설정하며, HTTP 요청 body 내용을 메서드의 매개변수가 전달받을 뿐만 아니라 HTTP 요청 body 내용 전체를 해당 매개변수 타입으로 변환해 줍니다.
다음은 컨트롤러 내에 요청 처리 메서드의 매개변수에 @RequestBody를 선언한 예입니다. @RequestBody가 선언된 메서드의 매개변수는 폼 페이지에서 입력된 다중 값을 &로 연결된 ‘name=value’ 형태로 전달받습니다.
@RequestBody 적용 예
Example01Controller.java
@Controller
@RequestMapping("/exam01")
public class Example01Controller {
@GetMapping
public String showForm() {
return "webpage14_01";
}
@PostMapping
public String submit(@RequestBody String param, Model model) {
model.addAttribute("title", "@RequestBody로 정보 받기");
model.addAttribute("result", param);
return "webpage14_result";
}
}