@Controller와 @RestController의 차이

song yuheon·2023년 9월 6일
0

Spring

목록 보기
55/93
post-thumbnail

@Controller@RestController는 Spring Framework에서 컨트롤러 클래스를 정의하기 위한 주요 어노테이션이다. 두 어노테이션 모두 클라이언트 요청을 처리하고 응답을 반환하는 역할을 수행하지만, 주요 차이점이 있다.


@Controller:


  • 기본 개념: Spring MVC에서 전통적인 컨트롤러를 정의하기 위한 어노테이션.
  • 응답 형태: 주로 뷰의 이름을 반환한다. 이를 통해, 해당 뷰를 렌더링하기 위한 로직이 수행된다.
  • 사용 예시: 웹 페이지를 렌더링하는 경우, JSP, Thymeleaf 등의 뷰 템플릿과 함께 사용된다.
  • 응답 데이터: HTTP 응답 본문에 직접 데이터를 넣으려면 @ResponseBody 어노테이션을 메소드 레벨에 추가해야 한다.

@RestController:


  • 기본 개념: Spring 4.0 이후 도입된 어노테이션으로, RESTful 웹 서비스의 컨트롤러를 정의하기 위해 사용된다.
  • 응답 형태: HTTP 응답 본문에 직접 데이터를 반환한다. 주로 JSON 또는 XML 형태의 데이터가 반환된다.
  • 사용 예시: API 엔드포인트를 제공하는 경우에 주로 사용된다.
  • 응답 데이터: 메소드 레벨에 별도의 @ResponseBody 어노테이션을 추가할 필요가 없다. @RestController는 내부적으로 @Controller@ResponseBody 어노테이션을 합친 것으로 생각할 수 있다.

주요 차이점


  • @Controller는 주로 뷰 이름을 반환하여 웹 페이지를 렌더링하는데 사용되며, HTTP 응답 본문에 데이터를 직접 넣으려면 @ResponseBody를 추가로 사용해야 한다.
  • @RestController는 RESTful 웹 서비스를 생성하는데 사용되며, 기본적으로 HTTP 응답 본문에 데이터를 반환한다.

profile
backend_Devloper

0개의 댓글