[Spring Boot] 클라이언트 전달 방식 ( API, MVC , 정적 content)

📌 컨텐츠 전달


Spring에서는 크게 세가지 전달 방식을 사용한다.

  • 정적 content
  • MVC, 템플릿 엔진
  • API 방식

본 글에서는 세 가지 전달 방식의 차이점에 대해 알아보도록 하겠습니다.

📌 정적 content 전달


content가 전달되는 방식은 요청과 전달 과정을 거칩니다.
전달 하는 부분에서 서버가 하는 일에 따라 방식이 나누어 지는 데, 정적 content 전달 방식에서는 서버는 사용자가 요청하는 content를 찾아서 전달만 합니다.

별도의 컨트롤러가 없이, 요청한 HTML 파일을 사용자에게 그대로 전달합니다.

📌 템플릿 엔진이란?


MVC, 템플릿 엔진 전달 방식에 앞서서 템플릿 엔진이 무엇인지 간단하게 살펴보도록 하겠습니다.

템플릿 엔진(Template Engine)이란
템플릿 양식과 특정 데이터 모델에 따른 입력 자료를 합성하여 결과 문서를 출력하는 소프트웨어(또는 소프트웨어 컴포넌트)를 말합니다..

그 중 웹 템플릿 엔진(web template engine)이란 웹 문서가 출력되는 템플릿 엔진을 말합니다.
즉, 웹 템플릿 엔진은 웹 템플릿들(web templates)과 웹 컨텐츠 정보(content information)를 처리하기 위해 설계된 소프트웨어입니다..

📌 MVC, 템플릿 엔진 방식


MVC 는 Model, View, Controller 를 가르키는 말입니다.
웹에서 화면을 출력하기 이전에, Content를 다루는 구현방식 중 하나입니다.

public String helloMvc(@RequestParam("name") String name, Model model)
: 스프링 컨테이너는 전달받는 String type의 객체를 Model에 저장하고, Model은 View에서 템플릿 엔진 처리에 사용됩니다.

model.addAttribute("name", name);
: 전달받은 name이라는 객체를 Model의 속성값에 저장합니다.

MVC, 템플릿 엔진 방식을 거친 후에 사용자는 요청한 HTML 문서를 스프링 컨테이너의 템플릿 엔진 처리 방식 이후의 HTML 파일로 받게 됩니다.

📌 API 방식


API 방식은 템플릿 엔진에서 처럼 viewResolver를 사용하지 않습니다.
대신에, @ResponesBody를 사용합니다. 이것은 HTTP의 BODY에 문자 내용을 직접 반환하는 것을 의미합니다. ( HTML의 BODY TAG와는 다릅니다. )
문자 내용은 이전 HTML을 반환하는 것과는 달리, JSON 이라는 형태로 반환됩니다.

@ResponseBody 를 사용하면 viewResolver를 사용하지 않는 대신에, HttpMessageConverter가 대신 작동합니다.

- 기본 문자처리: StringHttpMessageConverter
- 기본 객체처리: MappingJackson2HttpMessageConverter

📌 마무리


이번 글에서는 클라이언트의 요청에 따라, 웹이 어떤 방식으로 클라이언트에게 반응하여 반환하는 지에 대해 알아보았습니다.

해당 content는 김영한 개발자의 스피링 입문 강의를 배경으로 작성되었습니다.

좋은 웹페이지 즐겨찾기