Project : Gradle-Groovy Project
JDK : JAVA 17
Spring Boot Version : 3.0.6
Dependencies : Spring Web, Thymeleaf, H2database
IDEA : IntelliJ IDEA
저번 시간 스프링 기본 개념 및 MVC, 동적 환경 그림을 이해했다.
오늘은 정적 컨탠츠 및 API 그리고 애플리케이션 계층 구조를 이해해보자.
- 웹 브라우저에서 hello-static.html을 내장 톰켓 서버에 요청
- 내장 톰켓 서버는 스프링 부트 안 스프링 컨테이너에 전달
- 스프링 컨테이너 안 hello-static 관련 컨트롤러 안 매핑되는 것이 없어 resources로 이동
- resources.static에서 찾아 정적 컨텐츠(hello-static.html)을 전달
API란 응용 프로그램들이 서로 통신할 수 있는 일련의 규칙이다.
REST API란 JSON 데이터 구조 포맷으로 클라이언트에게 전달하는 행위
한마디로 데이터를 그대로 내려준다.
JSON이란 Key-Value방식으로 데이터를 주고 받을 때 그 자료를 표현하는
방법이다.
- @ResponseBody : HTTP Body 부분에 데이터 추가하는 어노테이션
- “hello“ + name 이 전달 되어 출력
객체(데이터)를 생성하여 반환
- 웹 브라우저가 hello-api를 내장 톰켓 서버에 요청
- 내장 톰켓 서버는 helloController안 매핑되는 메서드(helloapi)로 전달
- @ResponseBody 어노테이션을 보고 HTTP 응답 그대로 데이터를 넘겨야된다고 확인
1) HTTP의 BODY에 문자 내용을 직접 반환
2) viewResolver 대신에 HttpMessageConverter가 동작
3) 기본 문자처리 : StringHttpMessageConverter
4) 기본 객체처리 : MappingJackson2HttpMessageConverter
5) byte 처리 등등 기타 여러 HttpMessageConverter가 기본 등록
6) 참고로 클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해 HttpMessageConverter가 선택된다.- 객체를 HttpMessageConverter에 전달 후 HttpMessageConverter는
객체(Json)인지 문자열(String)인지 확인하여 해당 Converter를 동작시켜 변환- 변환 값 그대로 웹 브라우저에 응답
다음 시간에는 아래 요구사항 정리를 바탕으로 회원 관리 예제를 만들어본다.
데이터 : 회원ID, 이름
기능 : 회원 등록, 조회
아직 데이터 저장소가 선정되지 않음(가상의 시나리오)