728x90

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

본 블로그는 해당 스프링 강의(김영한) 수강 후, 작성된 게시물입니다.


웹 개발 방법 (3가지)

1. 정적 컨텐츠

   파일을 웹 브라우저로 그대로 내려주는 것

2. MVC와 템플릿 엔진

   HTML을 서버에서 동적으로 바꿔서 내려주는 것. (JSP, PHP 등의 템플릿 엔진)

3. API

   JSON 데이터 구조 포맷으로 클라이언트에 데이터 전달하는 것


3. API

1. HelloController.java에서 helloString 메소드를 작성한다.

@ResponseBody : http 통신 프로토콜에 header/body에서 body부에 해당 데이터를 직접 넣어주겠다는 의미

 

2. 실행

localhost:8080/hello-string?name=spring!!

이전의 템플릿 엔진과의 차이점은 View없이 문자 그대로 출력된다는 점! 페이지 소스보기(F12)에서 보이듯이 html 태그없이 오로지 텍스트만 출력되는 것을 확인할 수 있다.


3. HelloController.java에서 helloApi 메소드를 작성한다.

데이터를 받을때, 다음과 같은 방식을 많이 사용한다.

 

4. 실행

localhost:8080/hello-api?name=spring!!

다음과 같이 JSON 형식으로 출력되는 것을 확인할 수 있다.

※ JSON ? "키-값 쌍"으로 이루어진 데이터 표준 포맷


▶ 동작 방식

  • 웹 브라우저에서 hello-api를 친다.
  • 톰캣 내장 서버에서 스프링에게 hello-api가 왔다고 던진다.
  • 스프링 컨트롤에서 hello-api가 있다는 것을 확인한다.
  • 확인 도중 @ResponseBody 어노테이션이 붙여져 있다는 사실을 발견한다. 
  • 템플릿 엔진과 다르게 ViewResolver에게 보내지 않고, http 응답에 그대로 데이터를 넘겨야된다고 생각한다.
  • HttpMessageConverter가 동작을 하게 되며, 단순 문자면 StringConverter가 동작하고 객체라면 JsonConverter가 동작한다.
    • 기본 문자처리: StringHttpMessageConverter
    • 기본 객체처리: MappingJackson2HttpMessageConverter
  • 현재 지금 텍스트가 아닌 객체이기 때문에 JsonConverter가 JSON 방식으로 만들어서 http에 응답을 하도록 한다.

※ 참고, 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter가 선택된다.

Accept 헤더 : 요청을 할때, '나는 이런 포맷으로 받고싶어'라고 말하는 곳

 


# 정리

정적 컨텐츠 MVC와 템플릿 엔진 API
파일을 그대로 템플릿 엔진을 모델, 뷰, 컨트롤러로 쪼개서 뷰를 템플릿 엔진으로 렌더링된 HTML을 클라이언트에게 전달 HttpMessageConverter를 통해 JSON 스타일로 객체를 반환
View없이 HttpResponse에 값을 넣어 반환
728x90

+ Recent posts