주로 다음과 같은 3가지 방법으로 응답 데이터를 전송한다.
정적 리소스
예) 웹 브라우저에 정적인 HTML, css, js를 제공할 때는, 정적 리소스를 사용한다.
뷰 템플릿 사용
예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다.
HTTP 메시지 사용
: HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에
JSON 같은 형식으로 데이터를 실어 보낸다.
스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다.
경로 : src/main/resources/static
웹 브라우저에 동적인 HTML을 제공할 때, 뷰 템플릿을 사용한다.
경로 : src/main/resources/templates
@ResponseBody
❌ ➜ 뷰 리졸버가 실행되어 뷰를 찾아 렌더링
@ResponseBody
⭕ ➜ HTTP 메시지 바디에 반환 값을 직접 입력
명시성이 너무 떨어지며, 이렇게 딱 맞는 경우가 거의 없어 권장 ❌
@ResponseBody
, HttpEntity
를 사용하면, 뷰 템플릿을 사용하는 것이 아니라, HTTP 메시지 바디에 직접 응답 데이터를 출력할 수 있다.
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@GetMapping("/response-body-json-v2")
public HelloData responseBodyJsonV2() {
HelloData helloData = new HelloData();
helloData.setUsername("userA");
helloData.setAge(20);
return helloData;
}
@RestController
애노테이션 사용 시, 모든 컨트롤러에@ResponseBody
적용
➜ HTTP 메시지 바디에 데이터를 입력
❗ Rest API(HTTP API)를 만들 때 사용하는 컨트롤러
📌 본 포스트는 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 통해 학습한 내용을 요약 및 정리한 것입니다.