본문 바로가기

Spring Boot

RestController vs Controller

회고하는 이유?

스프링부트를 통해서 토이 프로젝트를 진행하는 과정에서 두 개의 컨트롤러를 사용했지만, 차이점과 용도를 알지 못하고 사용하였다. 추후에 프로젝트가 끝난 직후에, 리서치를 통해 두 컨트롤러에 대해 학습하였고 비슷한 생각을 하는 다른 코린이한데도 도움이 됐으면 하는 마음에 게시글을 작성했습니다.

 

주요 차이점

  • HTTP Response Body가 생성되는 방식 
더보기

☞ HTTP에 대해서

  1. 기본적으로 요청/응답 (request/response) 구조로 되어있으며, 클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조. 클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어 진다.
  2. HTTP Request/Response는 크게 3가지 부분(Status line, Headers, Body)으로 되어있다.
  3. Response의 body와 일반적으로 동일하다. Request와 마찬가지로 모든 response가 body가 있지는 않다. 데이터를 전송할 필요가 없을경우 body가 비어있게 된다.

 

Controller

  • 전통적인 Spring MVC의 컨트롤러
  • view(화면)을 리턴 (ResponseBody를 사용하여 객체, 데이터를 리턴할수도 있음)
더보기

Spring MVC의 전통적인 Work Flow

  1. 클라이언트는 URI 형식으로 웹 서비스에 요청을 보냄.
  2. 요청은 Handler Mapping과 그 타입을 찾는 DispatcherServlet에 의해 인터셉트
  3. 요청은 Controller에 의해 처리되고 응답은 DispatcherServelt으로 리턴된 후 DispatcherServlet은 View로 디스패치.

 

RestController

  • Restful 웹 서비스의 컨트롤러
  • 반환되는 객체 데이터 타입: JSON/XML 타입의 HTTP 응답을 직접 리턴
  • 각 메서드마다 @ResponseBody를 추가할 필요가 없다.
  • 데이터를 리턴하는 것이 주용도이다.
  • 클라이언트로부터 JSON 데이터 응답을 내려주기 때문에 @RestController 어노테이션을 사용해 온 것이다.

 

 참고자료

velog.io/@woo00oo/RestController-vs-Controller

 

@RestController vs @Controller

_나는 지금까지 컨트롤러 클래스 위에 Rest API를 사용하기 때문에 @RestController 어노테이션을 아무생각 없이 사용해 왔다. 이번 장에서는 @RestController 어노테이션과 @Controller 어노테이션의 정확한

velog.io

velog.io/@teddybearjung/HTTP-%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%86%8C#2-2-4-http-response-%EA%B5%AC%EC%A1%B0

 

HTTP 구조 및 핵심 요소

하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약).즉 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구

velog.io