8강(API 방식)
2022. 11. 5. 05:36ㆍ개발/spring1
API 방식
Hellocontroller에 새로운 메소드를 추가하자. 여기서 중요한건 @ResponseBody이다. 이게 뭐냐면 html에 나오는 body 태그가 아니라 http에서 헤더, 바디(header와 body)에서 이 바디 부분에 직접 넣어주겠다는 뜻이다.
템플릿 엔진과의 차이는 view가 없고 입력한 문자가 그대로 내려간다는 것이다.
템플릿 엔진은 뷰라는 템플릿이 있는 상태에서 그걸 조작하는 방식이고 API는 데이터를 그대로 내려준다.
이걸 쓸 일은 거의 없다.
이게 API 방식이다. 얘를 열어보면
이런 식으로 뜬다. 이걸 제이슨(JSON)방식이라고 한다. 제이슨은 키 밸류로 이루어진 구조이다.
옛날엔 xml 방식을 많이 썼으나 무겁고 열고 닫고 태그를 두 번씩 써야하고 뭐가 복잡하다.
그래서 최근에는 더 심플한 제이슨 방식으로 한다.
이걸 getter/setter라고 부르는데 이걸 자바빈 규약이라고 한다. 프로퍼티 접근방식 이라고도 한다.
ResponseBody 작동방식
- 웹브라우저에서 localhost:8080/hello-api라고 치면 톰캣 내장서버에서 hello-api가 왔다고 스프링에게 전달함
- 스피링은 hello-api가 있는걸 확인하는데, @ResponseBody가 있는 것을 보고 http 응답에 그대로 이 데이터를 넘겨야 겠다고 생각을 한다. 그런데 문자가 아니라 객체인 경우에는 스피링이 다르게 동작한다.
- 객체가 왔을 경우 기본 디폴트가 제이슨 방식으로 데이터를 만들어서 http 응답에 반환하는 것이 기본 정책이다.
- 그럼 이제 HttpMessageConverter라는 애가 동작을 하고 단순 문자라면 StringConverter가 동작하고 객체라면 Json Converter가 동작한다.
- 그럼 Json이 name이 있고 값이 있으면 제이슨 스타일로 바꿔서 요청한 곳에 응답을 해준다.
기본 문자처리: StringHttpMessageConverter
기본 객체처리: MappingJackson2HttpMessageConverter
'개발 > spring1' 카테고리의 다른 글
10강(회원 도메인과 리포지토리 만들기) (0) | 2022.11.06 |
---|---|
9강(비즈니스 요구사항 정리) (0) | 2022.11.05 |
7강(MVC와 템플릿 엔진) (0) | 2022.11.03 |
6강(스프링 웹 개발 기초) (0) | 2022.11.02 |
@5강(모바일에서 실행) (0) | 2022.11.01 |