서론

@RestController는 @Controller와 @ResponseBody의 조합이다.

@RestController는 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답을 담아서 전송한다.

따라서 return 값이 @Controller와 달리 반환 값으로 뷰를 찾는 것이 아닌, HTPP 메세지 바디에 바로 입력하게 된다. 

 

@RestController
@RequiredArgsConstructorpublic 
class TestController { 	

    private final MemberService memberService;  
    
    @GetMapping("api/board/member")    
    public Member findMember(@RequestParam("id") String id) {    	
        return memberService.findMember(member);    
    }	    
    
    @GetMapping("api/board/member")    
    public ResponseEntity<Member> findMemberResponseEntity(@RequestParam("id") String id) {                
        return ResponseEntity.ok(memberService.findMember(member));    
    }
}

 

findMember() 메서드는 Member 객체 그대로 반환하고 있다. 이러한 경우에는 client가 예상하는 HttpStatus를 설정할 수 없기에 ResponseEntity로 감싸서 반환해줘야 한다.


 

과거에는 JSP, HTML과 같은 View를 전달해 주었기에 주에 @Controller를 사용했고

현재는 Front, Back으로 나누어 개발하는 경우가 많기에 Backend에서 Rest Api를 통해 JSON으로 데이터를 전달하기 때문에 편리성을 위해 @RestController를 사용한다.