본문 바로가기

Spring&IntelliJ

@Controller와 @RestController 어노테이션

출처: https://velog.io/@dyunge_100/Spring-Controller%EC%99%80-RestController%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

@Controller와 @RestController 둘 다 Spring에서 Controller를 지정해주기 위한 어노테이션이다. 전통적인 Spring MVC의 Controller인 @Controller와 RESTful 웹 서비스의 Controller인 @RestController의 주요한 차이점은 Response Body가 생성되는 방식이다.

@RestController 어노테이션은 말 그대로 @Controller와 @ResponseBody가 합쳐진 어노테이션이라고 생각하면 된다. @Controller와 다르게 반환하려는 주류는 JSON 형태의 객체 데이터다. REST API를 개발할 때 주로 사용하며 마찬가지로 ResponseEntity로 감싸서 주로 반환한다.

위의 예제 코드 중 첫 번째 메서드는 User 객체를 그대로 반환하고 있다. 이 때의 문제는 클라이언트가 예상하는 HttpStatus를 설정해줄 수가 없다는 것이다. 한마디로 에러가 났을 때 상태 코드를 보여주거나 할 수 없다는 말이다. 따라서 REST API를 개발한다면 객체를 상황에 맞게 ResponseEntity로 감싸서 반환해주는 것이 옳다.