3.1 KiB
3.1 KiB
API
- API방식은 데이터를 바로 내려주는 방식이다.
@ResponseBody
http의 통신 프로토콜에서header와body중에서body에 응답 데이터를 직접 넣어주겠다는 의미이다.- 메서드에서 리턴하는 문자가 요청하는 클라이언트에 그대로 전달된다.
- 템플릿 엔진과의 차이는
View와 같은 것들이 없이 문자가 그대로 전달되는 것이다. - 즉,
html태그와 같은 것들이 하나도 없다...
static class
static class로 만들면class내부에서 사용할 수 있다.
인텔리제이 단축키
ctrl + shift + enter를 누르면 코드의 세미콜론을 자동완성해준다.
JSON
키(key)와값(value)으로 이루어진 구조이다.{키 : 값}의 형식을 가진다.- 과거에는
XML도 많이 쓰였다(<HTML></HTML>과 같은 것들). - 최근에는
JSON으로 거의 통일되었다(거의json이default로 세팅되어 있다).
자바 빈 규약
getter,setter를 자바 빈 규약이라고 하며, 프로퍼티 접근 방식이라고 하기도 한다.private필드값인name에 메서드를 통해서 접근하게 된다.
@ResponseBody 사용 원리(보통 API를 사용하는 방식)
- 웹 브라우저에서
localhost:8080/hello-api로 접근. - 톰캣 내장 서버가 스프링에 던짐.
- 스프링이
hello-api에 매핑된 메서드를 찾음. - 근데
@ResponseBody라는 어노테이션이 붙어있네? 이럴 경우에는 리턴된 데이터를 응답으로 그대로HTTP의BODY에 반환하도록 동작한다(view없이).- 그런데! 문자가 아니라 객체일 경우에는
json형식으로 데이터를 만들어서HTTP응답에 반환하는 것이 기본정책이다.
- 그런데! 문자가 아니라 객체일 경우에는
@ResponseBody가 있으면 우선,HttpMessageConverter라는 녀석이 동작한다(기존에는viewResolver가 동작했었다).- 단순 문자일 경우에는
StringConverter가 동작한다.- 기본 문자처리 :
StringHttpMessageConverter
- 기본 문자처리 :
- 객체일 경우에는
JsonConverter가 동작해서json형식으로 바꿔서 요청한 웹 브라우저 또는 서버로 반환한다.- 기본 객체처리 :
MappingJackson2HttpMessageConverter
- 기본 객체처리 :
- 단순 문자일 경우에는
- 실무에서는
Jackson,Gson라이브러리를 자주 보게되는데, 스프링에서는Jackson라이브러리를 기본으로 사용한다(물론 변경 가능하다). - 객체를
Jackson이라는 라이브러리로json으로 바꾸는 것을MappingJackson2HttpMessageConverter가 수행한다. - 이렇게 나오는
json데이터를HTTP의BODY에 실어서 웹 브라우저 또는 클라이언트 등에 반환한다. byte처리 등등 기타 여러HttpMessageConverter가 기본으로 등록되어 있다.
참고사항
- 클라이언트의
HTTP Accept 헤더와서버의 컨트롤러 반환 타입 정보둘을 조합해서HttpMessageConverter가 선택된다.