서버와 클라이언트 간의 요청(Request)과 응답(Response)는 HTTP메세지 규약을 따르고 있고,
HTTP 메세지는 마우스 우클릭 개발자 도구에서 확인이 가능하다 (검사 → network)
HTTP메세지의 구조는 시작줄, 헤더, 바디로 크게 3가지로 나눌 수 있다.
Request와 Response 실행시 HTTP의 각 구조에 입력되는 사항들이 다르다.
⇒ 싱글페이지 어플리케이션**
URL 주소 뒤에 파일명.html 을 붙여주면 별도의 컨트롤러 없이도 html을 꺼낼 수 있다.
static 폴더안에 내가 적은 파일명을 가진 html이 있는지 찾아보고 있다면 꺼내서 보여준다.
return 값에 “redirect:/파일명.html”; 이렇게 해주게되면 , HTTP메세지의 헤더부분에 Location 정보가 등록이 되면서 리턴값으로 입력한 곳으로 redirect 시킨다.
→ API 에서 uri를 입력할텐데, 해당 uri를 입력하면 redirect에 적은 곳으로 이동하게 된다.
타임리프는 기본 설정이 templates 폴더에서 html 파일을 찾도록 되어있어서,
templates 폴더에 html파일을 넣고 파일명을 리턴 값으로 주면 , 해당 파일을 꺼내준다.
리턴형 : String
return : “파일명”; (.html은 빼고)
이렇게 하면 파일명에 맞는 html을 알아서 찾아준다.
ResponseBody는 HTTP메세지의 바디로 문자열을 바로 쏴준다.
⇒ @ResponseBody 를 하면 view 를 거치지 않고, client화면에 바로 출력된다.
리턴형이 String 일 경우, HTTP의 contentType이 text/html로 적용이 된다.
⇒ return 되는 내용이 , html 시트와 동일하게 된다.
태그를 사용하면 태그들이 적용이 되서 화면에 출력이 되고, 그 외에는 뭘 입력해도 문자열로 출력이 된다.(html에서도 그냥 입력하면 문자열이 나오는 것처럼.)
리턴형이 String이 아닌 모든 경우, Json 형태로 전달이 된다.
HTTP contentType이 application/json 이 된다. (스프링이 json형으로 알아서 변환해준다. 만약 servlet으로 코드를 짠다면 프로그래머가 다 변환해줘야한다.)