API - String

 

동적 페이지를 만들어 주는 방법에는 templates engine과 API를 이용하는 두가지 방법이 있습니다.

 

일단 코드부터 보겠습니다.

 

Controller

먼저 controller에 위와 같은 코드를 입력해 줍니다.

 

여기서 @ResponseBody 라는 태그는 http의 body부에 "hello " + name; 을 직접 넣어주겠다 라는 의미 입니다.

 

API와 Template의 차이는 API에는 View가 없는 것입니다.

 

즉, API는 html 태그 없이 문자 그대로를 client에게 보내줍니다.

 

확실하게 비교하기 위해서 페이지 소스보기를 눌러보면

 

Template

 

API - String

위의 사진들을 보면 Template는 html 태그들을 전달해주고, API는 문자 그대로를 전달해줍니다.

 

여기서 일반 String을 전달해주지 않고 객체를 전달해주면 어떻게 될까요??

 


API - Object (객체)

 

먼저 객체를 만들어 줍니다.

 

Class

Getter와 Setter를 편하게 만들어주는 방법은

 

Window 기준 ALT + insert 를 눌러주면 Generate 창이 뜹니다.

 

여기서 getter setter를 검색하면 아래와 같이 나오고 enter를 눌러주면 아래와 같이 저절로 함수가 생성됩니다.

 

Generate

 

그리고 Controller에 객체를 output으로 내보내는 함수를 만들어 줍니다.

Controller

이제 서버를 재시작하고 localhost:8080/hello-api?name=spring!!!!! 로 접속을 해보면

 

API - Class

왼쪽 위와 같은 페이지가 나오게 되고 페이지 소스보기를 하면 오른쪽 위와 같이 나오게 됩니다.

 

페이지 소스를 보면 Key, Value 형태를 가진 Json으로 나오게 됩니다.

 

과거에는 xml 형태도 많이 쓰였지만 무겁고 열고 닫고 태그를 두번 써야해서 거의 Json 형태로 통일이 됐습니다.

 

이제 동작 방식을 보겠습니다.

API - Object

@ResponseBody 태그가 있기 때문에 client에게 그대로 데이터를 넘겨줍니다.

 

하지만 문자가 아니라 객체이기 때문에 spring에서는 HttpMessageConverter를 통해 (Jackson이라는 라이브러리 사용)

 

객체면 JsonConverter가 동작하여 Json 방식으로 데이터를 만들어서 넘겨주게 됩니다.

 


정리 : 

  • 정적 컨텐츠 - 그냥 파일을 그대로 전달한다.
  • MVC, Template Engine - Template Engine을 Model, View, Controller 형태로 쪼개서 랜더링된 html을 전달한다.
  • API - 객체를 HttpMessageConverter를 통해서 JSON 형태로 바꿔서 전달한다.

 

 

 

 

출처 : 인프런 - 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (김영한 강사님)

'Web > backend' 카테고리의 다른 글

07 - 02. 회원 관리 예제  (0) 2022.11.03
07 - 01. 회원 관리 예제  (0) 2022.10.05
05. 정적 컨텐츠, MVC  (0) 2022.10.04
04. 빌드하고 실행하기  (0) 2022.10.04
03. Welcome Page 만들기  (0) 2022.09.30

+ Recent posts