출처: 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로 감싸서 반환해주는 것이 옳다.
'Spring&IntelliJ' 카테고리의 다른 글
알기쉽게 정리한 @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor (0) | 2024.06.11 |
---|---|
@Requestbody, @ResponseBody에 대하여 (0) | 2024.06.10 |
Web Server와 WAS의 차이와 웹 서비스 구조 (0) | 2024.04.10 |
(프론트연계)fetch api를 post 방식으로 보내기 (0) | 2024.04.01 |
H2 새로운-저장소-생성하기 (1) | 2024.01.15 |