인프런 커뮤니티 질문&답변

양치잘하기님의 프로필 이미지

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

스프링 MVC 전체 구조

Mvc구조에서 뷰를 반환하지 않고 json을 반환하려면 어디서 구조 변경이 일어나나요?

해결된 질문

작성

·

155

0

스프링 Mvc구조를 설명해주실때 4번 핸들러 호출 이후 5번 ModelAndView를 반환한다고 되어 있는데 모델과 뷰애서 모델은 ssr에서 사용할 데이터들이 담겨 있는 모델에서 데이터를 꺼내어서 타임리프나 jsp 에서 사용할 수 있도록 데이터가 담긴 박스를 반환해주는 것이고 뷰는(타임리프를 사용한다고 할 때) 어떤 html에 모델을 넘겨줄것인지 결정해주는 부분으로 이해하였습니다.

이 방법은 앱 클라이언트처럼 json형식으로 데이터를 반환해야 하는 클라이언트를 이용할 때는 사용하지 못하는 방법으로 이해가 되는데 (json데이터를 요구하는 클라이언트에게는 뷰를 반환하여도 의미가 없는 데이터 이기 때문에) 어디서 구조를 변경해야 json 데이터를 반환해 줄 수 있는건가요?

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

양치잘하기님의 질문에 대해, 스프링 MVC에서 JSON 데이터를 반환하는 방법에 관해 설명해드리겠습니다. 주로 @RestController@ResponseBody 어노테이션을 사용하여 직접 객체를 반환하면, 스프링에서는 해당 객체를 JSON 형태로 변환하여 클라이언트에게 보내줍니다. 이 과정에서 HttpMessageConverter가 중요한 역할을 하는데요, 이 컨버터는 @ResponseBody를 사용하거나 RestController를 통해 반환된 객체를 HTTP 응답 본문에 쓰기 위해 사용됩니다.

질문하신 내용과 직접 관련된 html 대신 객체를 반환할 때 Dispatcher Servlet에서는 어떻게 처리가 되는걸까요??라는 질문에 답변이 있습니다. @ResponseBody 등을 사용해 HTML 대신에 직접 객체를 반환하는 경우, 스프링 MVC의 처리 흐름에 대해 문의하신 내용과 연결됩니다. 핸들러 어댑터가 DispatcherServlet에게 ModelAndView 대신 객체를 반환할 때, HttpMessageConverter에 의해 해당 객체는 HTTP 응답 본문으로 변환되어 클라이언트에 보내집니다. 이 과정에서는 기존에 뷰 렌더링을 위해 사용됐던 ModelAndView가 사용되지 않음을 알 수 있습니다.

이해하기 쉽게 요약하자면, @RestController@ResponseBody 사용 시, 스프링은 반환된 객체를 자동으로 JSON 등의 형식으로 변환하여 응답합니다. 이 변환에는 HttpMessageConverter가 사용되며, 따라서 별도의 뷰 페이지 없이도 데이터를 클라이언트에게 전달할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.