Client에서 받은 요청을 Controller에서 데이터를 인자에 할당하는 방법들이다.
- @RequestBody
- @RequestParam
- @ModelAttribute
@Controller
public class TestController {
@PostMapping("/receive")
public String age((@RequestParam(value = "error", required = false) String req) {
System.out.println("통신 성공");
System.out.println(">>> " + req);
return "result";
}
}
@Controller
public class TestController {
@PostMapping("/receive")
public String age(@RequestBody Person person) {
System.out.println("통신 성공");
System.out.println("Person 데이터 >>> " + person);
return "result";
}
}
@RequestBody 와 @RequestParam
👀 둘다 Map<String, String>으로 결과를 받아올 수 있다.
@Controller
public class TestController {
@PostMapping("/receive")
public String age(@RequestBody Map<String,String> map) {
System.out.println("통신 성공");
System.out.println(">>> " + map.get("name"));
System.out.println(">>> " + map.get("age"));
return "result";
}
}
@Controller
public class TestController {
@PostMapping("/modelAttribute")
public ResponseEntity<Board> modelAttribute(@ModelAttribute final Board board) {
// @ModelAttribute는 multipart/form-data 형태의 HTTP Body 내용과 HTTP 파라미터들을 1대1로 객체에 바인딩시킨다.
// 만약 값을 주입해주는 생성자나 Setter함수가 없다면 매핑을 시키지 못하고, null을 갖게 된다.
log.info(board);
return ResponseEntity.ok(board);
}
@RequestBody 와 @ModelAttribute
💡 @ModelAttribute → multipart/form-data형태의 HTTP Body와 HTTP파라미터들을 생성자나 수정자로 주입시킴.