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";
    }
        
}