클라이언트가 서버에 요청을 하게 되면 해당 요청 경로를 찾아 데이터를 받거나 해당 View 페이지를 보여 주어야 한다. 그것을 도와주는 역할이 Controller이다.
@RestController - Data

@RestController는 클라이언트로부터 요청이 오면 적절한 값을 클라이언트에게 보내준다.
@Controller - View

@Controller도 마찬가지로 적절한 값을 클라이언트에게 보내주는 역할을 한다.
@Controller와 @RestController의 차이점
Controller는
- 클라이언트가 url로 요청을 보내온다면
- 디스패쳐가 적절한 hadler를 Mapping 하여 컨트롤러에게 요청을 보내고
- Controller는 요청받은 정보를 토대로 View(페이지) 또는 Data( DB로부터 값을 받아온다 )를 요청한 클라이언트에게 보내준다.
@Controller는 주로 View를 반환하기 위해 사용된다. 클라이언트로부터 요청이 오면 적절한 주소를 매핑하여 클라이언트에게 페이지를 보여주는 역할을 한다.
@RestController는 주로 Data를 반환하는 경우도 있다. @ResponseBody가 자동으로 붙어서 반환된다.
컨트롤러를 구분짓는 이유에 대한 나의 생각
이 두개의 컨트롤러가 하는 역할은 같지만 결과 값은 완전히 다른 모습을 보여준다.
굳이 왜 이렇게 만들었을까 생각해 보자면 데이터 값과 페이지를 구분하기 위해서이지 않을까 싶다.
홈페이지를 만들게 된다면 무수히 많은 URL 요청이 있을 것이며 데이터 요청도 많이 이루어질 것이다.
이 두개의 컨트롤러를 구분하지 않는다면 개발자가 어떤 것이 View를 띄우는 컨트롤러이고 Data를 보내는 컨트롤러인지 헷갈리게 될 것이다. 그렇기에 구분을 하여 가독성이나 유지보수를 높여주기 위함이지 않을까 생각한다.
이미지 출처: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/
'Spring > 스프링 부트' 카테고리의 다른 글
| 2021-12-13(스프링) HandlerInterceptor는 무엇일까 (0) | 2021.12.13 |
|---|---|
| 2021-11-24(스프링 공부) form태그의 content- type (0) | 2021.11.24 |
| 2021-11-11 (회고록) 11일 공부정리 (0) | 2021.11.11 |
| 2021-10-25(JPA 공부) 프록시 객체 (0) | 2021.10.25 |
| 2021-10-22(스프링) 22일 공부 정리 (0) | 2021.10.22 |