<aside> 💡 Spring MVC를 이용한 REST API 만들기

</aside>

👀  @Controller 및 @RestController

@Controller

Untitled

  1. Handler Mapping이 DispatcherServlet이 요청을 처리할 적절한 컨트롤러를 찾는다.
  2. 그러면 HandlerAdapter을 통해 요청을 Controller로 위임한다.
  3. Controller는 비즈니스 로직을 처리하고 ViewName을 반환한다.
  4. DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 사용자에게 반환한다.

@RestController

Untitled

  1. DispatcherServlet이 요청을 처리할 대상을 찾는다.
  2. HandlerAdapter을 통해 요청을 Controller로 위임한다.
  3. Controller는 요청을 처리한 후에 객체를 반환한다.
  4. 반환되는 객체는 JSON이나 XML으로 변환되어 사용자에게 반환한다.

주요 차이점

응답 처리

@Controller 는 뷰를 반환하는 것에 중점을 두며, 일반적으로 웹 페이지를 반환하는 데 사용

@RestController 는 RESTful API를 구현하는 데 사용되며, JSON이나 XML 등의 형태로 데이터를 직접 반환

뷰 렌더링

@Controller 와 함께 사용되는 메서드는 뷰 이름을 반환하고, ViewResolver 를 통해 뷰를 렌더링

@RestController 의 메서드는 뷰 렌더링 없이 데이터 자체를 반환

이러한 차이를 이해하는 것은 HTTP 기반의 웹 서비스를 설계할 때 중요하다.

각각의애노테이션은 사용 목적과 필요에 따라 선택하여 사용하며, 두 가지 방식을 적절히 혼합하여 사용한다.