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

@RestController - Data


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

 

 

@Controller - View 


@Controller도 마찬가지로 적절한 값을 클라이언트에게 보내주는 역할을 한다.

 

 

@Controller와 @RestController의 차이점


 

Controller

  1.  클라이언트가 url로 요청을 보내온다면 
  2.  디스패쳐가 적절한 hadler를 Mapping 하여 컨트롤러에게 요청을 보내고 
  3.  Controller는 요청받은 정보를 토대로 View(페이지) 또는 Data( DB로부터 값을 받아온다 )를 요청한 클라이언트에게 보내준다. 

 

@Controller는 주로 View를 반환하기 위해 사용된다. 클라이언트로부터 요청이 오면 적절한 주소를 매핑하여 클라이언트에게 페이지를 보여주는 역할을 한다.

 

@RestController는 주로 Data를 반환하는 경우도 있다. @ResponseBody가 자동으로 붙어서 반환된다.

 

 

컨트롤러를 구분짓는 이유에 대한 나의 생각


이 두개의 컨트롤러가 하는 역할은 같지만 결과 값은 완전히 다른 모습을 보여준다.

굳이 왜 이렇게 만들었을까 생각해 보자면 데이터 값과 페이지를 구분하기 위해서이지 않을까 싶다.

홈페이지를 만들게 된다면 무수히 많은 URL 요청이 있을 것이며 데이터 요청도 많이 이루어질 것이다.

이 두개의 컨트롤러를 구분하지 않는다면 개발자가 어떤 것이 View를 띄우는 컨트롤러이고 Data를 보내는 컨트롤러인지 헷갈리게 될 것이다. 그렇기에 구분을 하여 가독성이나 유지보수를 높여주기 위함이지 않을까 생각한다.

 

이미지 출처: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/

+ Recent posts