Java/Spring Framework
[Spring Framework] @RequestBody와 @ResponseBody
크리스피코드
2023. 1. 26. 14:31
0. @RequestBody
@RequestBody는 요청 데이터로 넘어온 JSON을 자바 객체에 매핑해주는 어노테이션이다.
@GetMapping("/login")
public String get(@RequestBody MemberVO memVo){
MemberVO memInfo = memberService.login(memVo);
return memInfo;
}
1. @ResponseBody
@ResponseBody는 데이터를 응답 HTTP Body에 담아주는 어노테이션이다. AJAX 비동기 요청에 대해 응답을 보낼 때 자주 사용한다.
스프링의 경우 컨트롤러에 작성된 메서드들의 반환값이 String일 경우, ViewResolver에서 이를 View 파일의 경로로 해석하여 클라이언트에게 HTML이나 JSP 등의 문서 파일을 전송하게 된다.
@ResponseBody 어노테이션을 사용하면 반환 타입이 String일 때 View 파일의 경로가 아닌 실제 문자열 그 자체를 반환한다. 또한 Map이나 List 객체의 경우에도 자동으로 JSON 데이터로 변환하여 응답데이터로 전송하게 된다.
@ResponseBody
@PostMapping("/hello")
public String post(){
return "response : hello";
}
* @ResponseBody의 생략
@ResponseBody를 사용하지 않아도 반환타입이 자동으로 JSON으로 변환되는 경우가 있는데 바로 @RestController를 사용했을 때이다. 'Rest'라는 이름에서 유추할 수 있 듯, REST API를 개발하기 위한 컨트롤러이다보니 응답 데이터도 JSON으로 자동 변환해주는 것 같다.
@RestController
public class MyController{
@GetMapping("/hello")
public String get(){
return "response : hello";
}
}