1. 정적 컨텐츠 : 파일 자체를 웹 브라우저에 전달
2. MVC와 템플릿 엔진 : server에서 html파일을 변환 후 전달
3. API : xml이나 JSON(default)으로 client에게 전달, server끼리 통신할 때 사용
스프링 웹 개발 발법에는 위와 같이 크게 3가지가 있다.
그 중 API 동작과정을 살펴보겠다.
API란 Application Programming Interface의 약자로, 어떤 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구이다.
@ResponseBody를 사용하면 뷰 리졸버를 사용하지 않고, BODY에 문자 내용을 직접 반환한다. (HTML BODY TAG가 아니다.)
@GetMapping과 @ResponseBody 어노테이션을 사용해 위와 같이 코드를 작성했다.
localhost:8080/hello-string?name=spring 을 요청하자 위와 같은 화면이 출력됐다.
MVC 템플릿 엔진과 다른점이 무엇일까?
페이지 소스를 보면 그 차이를 알 수 있다. 페이지 소스를 살펴보자.
페이지 소스가 위와 같다.
이는 MVC 템플릿 엔진으로 처리한 페이지의 소스이다.
@ResponseBody를 사용하면 뷰 리졸버를 사용하지 않고, BODY에 문자 내용을 직접 반환하는 것을 알 수 있다.
문자가 아닌 객체를 받으면 어떻게 될까?
@ResponseBody 를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다.
위와 같이 코드를 작성했다. 문자가 아닌 객체를 받는다.
문자를 받을 때와는 다른 화면이 출력됐다.
JSON으로 변환되어 키-값 쌍으로 반환된 것이다.
@ResopnseBody를 사용하면 'viewResolver' 대신에 'HttpMessageConverter'가 동작한다. 이때 기본 문자는 'StringHttpMessageConverter'가 동작하고, 기본 객체는 'MappingJackson2HttpMessageConverter'가 동작한다.
Ref.
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술(김영한 강사님)