본문 바로가기

Backend/REST API

@Controller와 @RestController의 차이점

문제

@RestController 어노테이션을 달아주지 않고 @GetMapping만 했더니 GET으로 조회가 되지 않았다. 

 

해결방법

Class 바깥에 @RestController 어노테이션 추가하기 

 

그런데, @Controller는 왜 안되는걸까? 

 

구글링을 해보니,다음과 같았다.

@Controller는 Model 객체를 만들어 데이터를 담고 View를 찾는 형식

@RestController는 단순히 객체만을 반환(JSON 또는 XML형식으로 HTTP 응답에 담아서 전송) 

 

 

https://dncjf64.tistory.com/288

참고 

 

@Controller와 @RestController의 차이점

1.개요 Spring MVC의 @RestController은 @Controller와 @ResponseBody의 조합입니다. Spring 프레임 워크에서 RESTful 웹 서비스를 보다 쉽게 개발할 수 있도록 Spring 4.0에서 추가되었습니다. 근본적인 차이점은 @Contr

dncjf64.tistory.com

 

@RestController는 @ResponseBody + @Controller의 조합이다. Spring은 이를 채택하였다. 

@ResponseBody는 HTTP Response Body에 데이터를 담아 Restful 웹서비스에 대한 응답에 유용하다고 한다. 뷰를 반환하는 대신 데이터를 반환하기 때문이다.

 

결론은, @RestController을 사용하자