스프링 스터디를 진행했을 때는 JSON 형태로만 데이터를 확인하기 위해 컨트롤러에서
@RestController를 사용했지만, SSR로 프로젝트를 진행할 때는 @Controller를 사용해서 둘의 차이점이 문득 궁금해서 정리하게 됐습니다.
둘의 쓰임새는 어떻게 다른가?
@Controller
@Controller는 주로 View를 반환할 때 사용됩니다. 즉, Client의 요청으로부터 서버에서 View를 렌더링해서 전달하는 경우에 사용합니다. 예시로는 Model 객체에 데이터를 담아서 View를 찾는 "타임리프"가 있습니다.
@RestController
@RestController는 JSON 또는 XML 형식으로 HTTP 응답에 담아서 데이터를 전송할 때 사용 됩니다. 즉, 프론트 개발자와 Restful 웹 서비스로 협업할 때 JSON으로 데이터를 주고 받는다면은 @RestController가 더 적합합니다.
물론, @Controller + @ResponseBody 조합으로 @RestController처럼 사용할 수도 있습니다.
( Spring 4 이전에는 이러한 방식으로 RESTful 웹 서비스를 개발 )
-> 즉, 둘의 가장 큰 차이점은 "@ResponseBody(HTTP 응답 바디)"의 유무이고
여기서 @ResponseBody는 컨트롤러의 응답이 "JSON"이라고 알려주는 역할 임을 알 수 있습니다.
참고
'Spring' 카테고리의 다른 글
@RequestBody vs @ModelAttribute (0) | 2022.09.25 |
---|---|
연관관계 편의 메서드 필요성 [Spring] (0) | 2022.09.13 |
@PathVariable vs @RequestParam [Spring] (0) | 2022.09.13 |
DTO vs VO (0) | 2022.07.15 |