티스토리 뷰
1) RestController란?
@RestController
- Spring 4 에서 Rest API 또는 Web API를 개발하기 위해 등장한 애노테이션입니다.
- 이전 버전(Spring3)의 @Controller와 @ResponseBody를 포함합니다.
MessageConverter
- 자바 객체와 HTTP 요청 / 응답 바디를 변환하는 역할
- @ResponseBody, @RequestBody
- @EnableWebMvc 로 인한 기본 설정
- WebMvcConfigurationSupport 를 사용하여 Spring MVC 구현
- Default MessageConverter 를 제공
- 링크 바로가기 의 addDefaultHttpMessageConverters메소드 항목 참조
- RestController를 사용하기 위해서는 MessageConverter가 굉장히 중요합니다. 예를 들면 외부에서 전달받은 JSON 메서드를 내부에서 사용할 수 있는 객체로 변환하거나 컨트롤러를 리턴한 객체가 클라이언트에게 JSON으로 변환해서 전달할 수 있도록 하는 역할을 MessageConverter가 합니다. 이런 MessageConverter를 @EnableWebMvc로 사용하게 되면 기본으로 제공이 됩니다.
MessageConverter 종류
MessageConverter 종류 |
기능 |
ByteArrayHttpMessageConverter |
converts byte arrays |
StringHttpMessageConverter |
converts Strings |
ResourceHttpMessageConverter |
converts org.springframework.core.io.Resource for any type of octet stream |
SourceHttpMessageConverter |
converts javax.xml.transform.Source |
FormHttpMessageConverter |
converts form data to/from a MultiValueMap<String, String> |
Jaxb2RootElementHttpMessageConverter |
converts Java objects to/from XML (added only if JAXB2 is present on the classpath) |
MappingJackson2HttpMessageConverter |
converts JSON (added only if Jackson 2 is present on the classpath) |
MappingJacksonHttpMessageConverter |
converts JSON (added only if Jackson is present on the classpath) |
AtomFeedHttpMessageConverter |
converts Atom feeds (added only if Rome is present on the classpath) |
RssChannelHttpMessageConverter |
converts RSS feeds (added only if Rome is present on the classpath) |
JSON 응답하기
- 컨트롤러의 메소드에서는 JSON으로 변환될 객체를 반환합니다.
- jackson라이브러리를 추가할 경우 객체를 JSON으로 변환하는 메시지 컨버터가 사용되도록 @EnableWebMvc에서 기본으로 설정되어 있습니다.
- jackson라이브러리를 추가하지 않으면 JSON메시지로 변환할 수 없어 500오류가 발생합니다.
- 사용자가 임의의 메시지 컨버터(MessageConverter)를 사용하도록 하려면 WebMvcConfigurerAdapter의 configureMessageConverters메소드를 오버라이딩 하도록 합니다.
- json으로 변환을 하기 위해서 기본 MessageConverter는 jackson 라이브러리를 사용하고 있습니다. 그래서 만약에 jackson 라이브러리가 제대로 추가되어 있지 않으면 JSON을 처리하는 Converter가 등장하지 않기 때문에 500번 오류를 발생시키게 됩니다.
생각해보기
- Web API에서 JSON메시지를 자주 사용하는 이유는 무엇일까요?
- JSON메시지의 장점에 대해 찾아보세요.
참고 자료
[참고링크] spring-projects/spring-framework
https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java
[참고링크] Building a RESTful Web Service https://spring.io/guides/gs/rest-service/
[참고링크] Building REST services with Spring https://spring.io/guides/tutorials/bookmarks/
'부스트코스 웹 프로그래밍 > 3. 웹 앱 개발: 예약서비스 1' 카테고리의 다른 글
11. Controller - BE (2) (0) | 2019.08.07 |
---|---|
10. 레이어드 아키텍처(Layered Architecture) - BE (2) (0) | 2019.08.07 |
10. 레이어드 아키텍처(Layered Architecture) - BE (1) (0) | 2019.08.06 |
9. Spring MVC - BE (3) (0) | 2019.08.06 |
9. Spring MVC - BE (2) (0) | 2019.08.06 |