정적 컨텐츠
client가 요청을 하면 내장 서버인 tomcat이 ~~이런 요청이 들어왔어!라고 하면서 스프링부트 쪽으로 넘겨준다.
그럼 제일 먼저 호출되는 것은 Controller이다. 따라서 url에 get 방식으로 요청이 들어왔을 때, 그와 mapping(@GetMapping)된 함수가 없다면 /static 폴더에서 그에 맞는 파일을 찾아서 넘겨준다.
MVC 템플릿 엔진
MVC: Model, View, Controller
이전 강의에서 배웠듯이, Controller는 Model에 데이터를 담아 View(/templates)에게 쏴준다.
정적 컨텐츠를 쏴줄 때와 다른 점은 Controller가 mapping된 함수를 찾아서 model에 데이터를 넣고 viewResolver에게 이에 맞는 view를 찾아서 변환해줘라~ 라고 한다. 그럼 viewResolver는 템플릿엔진으로 처리하여 변환된 html파일을 client에 반환하여 주는 방식이다.
API
스프링에서 API 방식은 데이터를 넘겨줄 때 사용한다.
여기서 데이터란 간단한 문자열이 될 수도 있고, 객체가 될 수도 있다. 객체를 넘겨줄 때 기본 형식은 json형식이라고 한다.
이때 annotation은 @ResponseBody이다.
위 코드에서 보면 mapping이 "hello_api"로 되어있으므로 localhost:8080/hello_api(get 방식 요청) 라고 요청했을 때, Controller는 이 함수를 찾을 것이다.
이 때, @RequestParam("name") String name 이라고 해서 파라미터로 name의 값을 받아 name에 넣겠다는 뜻이다.
그럼 요청을 할 때, localhost:8080/hello_api?name=h32j00 라고 하면 name에는 h32j00가 저장된다.
그리고 코드를 보면 return 하는 값이 단순 문자열이 아닌 hello라는 객체임을 확인할 수 있다.
이 때, Controller가 hello 객체를 보내면 viewResolver가 아닌 HttpMessageConverter(MappingJackson2HttpMessageConverter)가 동작한다. 이 converter가 객체를 json 형식으로 바꿔서 http의 body부분에 넣고 client로 보낸다.
'Backend > Spring' 카테고리의 다른 글
[인프런 스프링 입문] 스프링 DB 접근 기술 (0) | 2021.01.09 |
---|---|
[인프런 스프링 입문] 회원 관리 예제 - 웹 MVC 개발 (0) | 2021.01.07 |
[인프런 스프링 입문] 스프링 빈과 의존관계 (0) | 2021.01.07 |
[인프런 스프링 입문] 회원 관리 예제 - 백엔드 개발 (0) | 2021.01.06 |
[인프런 스프링 입문] 프로젝트 환경설정 (0) | 2021.01.04 |