8강(API 방식)

2022. 11. 5. 05:36개발/spring1

API 방식

 

 

Hellocontroller 새로운 메소드를 추가하자. 여기서 중요한건 @ResponseBody이다. 이게 뭐냐면 html 나오는 body 태그가 아니라 http에서 헤더, 바디(header body)에서 바디 부분에 직접 넣어주겠다는 뜻이다.

 

템플릿 엔진과의 차이는 view 없고 입력한 문자가 그대로 내려간다는 것이다.

 

 

 

템플릿 엔진은 뷰라는 템플릿이 있는 상태에서 그걸 조작하는 방식이고 API 데이터를 그대로 내려준다.

이걸 일은 거의 없다.

 

 

이게 API 방식이다. 얘를 열어보면

 

 

이런 식으로 뜬다. 이걸 제이슨(JSON)방식이라고 한다. 제이슨은 밸류로 이루어진 구조이다.

 

옛날엔 xml 방식을 많이 썼으나 무겁고 열고 닫고 태그를 번씩 써야하고 뭐가 복잡하다.

그래서 최근에는 심플한 제이슨 방식으로 한다.

 

 

이걸 getter/setter라고 부르는데 이걸 자바빈 규약이라고 한다. 프로퍼티 접근방식 이라고도 한다.

 

ResponseBody 작동방식

 

  1. 웹브라우저에서 localhost:8080/hello-api라고 치면 톰캣 내장서버에서 hello-api 왔다고 스프링에게 전달함
  2. 스피링은 hello-api 있는걸 확인하는데, @ResponseBody 있는 것을 보고 http 응답에 그대로 데이터를 넘겨야 겠다고 생각을 한다. 그런데 문자가 아니라 객체인 경우에는 스피링이 다르게 동작한다.
  3.  객체가 왔을 경우 기본 디폴트가 제이슨 방식으로 데이터를 만들어서 http 응답에 반환하는 것이 기본 정책이다.
  4. 그럼 이제 HttpMessageConverter라는 애가 동작을 하고 단순 문자라면 StringConverter 동작하고 객체라면 Json Converter 동작한다.
  5. 그럼 Json name 있고 값이 있으면 제이슨 스타일로 바꿔서 요청한 곳에 응답을 해준다.

 

기본 문자처리: StringHttpMessageConverter

기본 객체처리: MappingJackson2HttpMessageConverter