서비스나 데이터를 HTTP 기반 API 형태로 제공.
트위터의 타임라인, 멘션 목록, 팔로워 목록 등을 제공하는 HTTP 기반의 API를 제공하고, 네이버 또한 단축 URL을 제공하는 HTTP 기반의 API를 제공하고 있다. 위의 기업들 특징중 하나는 응답으로 XML이나 JSON형식을 사용한다는 점이 있다.
MVC를 사용할 때, XML or JSON 응답 생성을 위한 뷰 클래스를 사용하거나 HttpServletResponse를 이용해서 직접 원하는 응답을 생성할 수 있다.
스프링 MVC는 XML과 JSON 형식을 처리하는 방법을 제공하는데, 어노텐션이 들어간 @requestBody와 @ResponseBody를 사용하는 것이다.
@RequestBody , @ResponseBody , HttpMessageConverter
- 스프링이 제공하는 @RequestBody @ResponseBody 어노텐션은 각각 요청 몸체와 응답 몸체와 관련이 있다.
- @RequestBody 어노텐션은 요청 몸체를 자바 객체로 변환시켜줄때 사용된다. 요청 파라미터 문자열을 String 자바 객체로 변환하거나, JSON 형식의 요청 몸체를 자바 객체로 변환할때
- @ResponseBody 어노텐션은 자바 객체를 응답 몸체로 변환하기 위해 사용된다 자바 객체를 JSON형식이나 XML 형식의 문자열로 변환할때

20번을 보면 @ReqeustBody 어노텐션은 String 타입의 body 파라미터에 적용되어 POST방식으로 전송된 HTTP요청을 String 타입의 body 파라미터로 전달한다.(즉 return 으로 body에 정보를 넘긴다.) 메서드에 @ResponseBody 어노텐션이 붙으면 스프링 MVC에서는 메서드의 리턴 값을 HTTP응답 데이터로 사용한다. (JSP에서 만든 정보를 MVC에서 동작해 @RequestBody어노텐션으로 body에 정보가 전달된다 )

스프링 mvc 기본 httpmessageconverter
JAXB2 API는 자바 객체와 XML 사이의 변환을 처리해주는 API
Jaxb2RootElementHttpMessageConverter은 JAXB2 API를 이용해 자바 객체를 XML응답으로 변환하거나 XML 요청 몸체를 자바 객체로 변환시켜준다
- Jaxb2RootElementHttpMessageConverter 변환 처리 지원.
- XML → @XmlRootElement 객체 또는 @XmlType 객체
- @XmlRootElement 적용 객체 → XML로 쓰기
XML 요청 몸체를 @RequestBody 어노텐션을 이용한 JAXB2 기반의 자바 객체로 변환하거나 JAXB2 기반 객체를 @ResponseBody 어노텐션을 이용해 XML 응답으로 변환하려면 Jaxb2RootElementHttpMessageConverter를 사용한다
MVC 설정을 사용하면 기본으로 등록되기에 추가적인 설정은 필요없다
브라우저별로 XML or JSON형식의 데이터를 서버에 전송하기 위한 플로그인이 있다. 해당 브라우저별로 xML or JSON형식으로 만들면된다.
크롬의 경우 Advanced Rest Client 확장 프로그램을 사용하면 자바 스크립트 코드를 작성할 필요없이 XML이나 JSON형식의 데이터 전송을 할수있다.
Jackson2를 이용한 JSON 처리
자바 객체를 JSON으로 변환하거나 JSON을 자바 객체로 변환할때 주로 사용하는 라이브러리 스프링의 MVC 의 MappingJackson2HttpMessageConverter은 Jackson2를 이용해 자바 객체와 JSON 간의 변환 처리를 한다.
( 결국 DB에 정보를 주고 받고하기 위한 처리 과정이다. )
Jackson2를 사용하기 위해 메이븐 의존 설정에 Jackson2의존을 추가해주어야한다.(pom.xml) <dependency>
'Java > SPRING' 카테고리의 다른 글
스프링 [Spirng] 파일 업로드(multipart....)에 대한 정리 (0) | 2022.01.15 |
---|---|
스프링 [Spirng] ViewResolver 인터페이스란 (0) | 2022.01.15 |
스프링 [Spirng] MVC패턴에 대한 개념 및 용어 설정에 대한 정리. (0) | 2022.01.12 |
스프링 [Spirng] AOP(Aspect Oriented Programming) 개념 정리 및 주요 용어 (0) | 2022.01.11 |
스프링 [Spirng] Environment를 이용한 프로퍼티 란 (0) | 2022.01.11 |