Spring REST - hyunwoo-e/Spring GitHub Wiki
MVC vs REST
-
HTTP Response Body 생성 방식
- MVC 컨트롤러는 ViewResolver 사용
- REST 컨트롤러는 객체데이터를 JSON/XML형식으로 HTTP 응답에 직접 작성
-
Spring에서 REST 작성 방법
- @Controller에 @ResponseBody 사용
- @RestController 사용
RestTemplate
Spring에서 제공하는 HTTP Request 요청을 처리할 수 있게 설계된 모듈이다.
- REST 요청에 최적화 되어 있으나, JSON 타입의 API요청이 아닌 경우에도 사용가능하다.
- RestTemplate이 등장하기 전에는 URLConnection(jdk), httpClient(apache library)를 사용하였다.
- Method
- ANY: exchange(): RequestEntity를 매개변수로가지며, URI로 요청하고 ResponseEntity를 반환한다.
- POST: postForObject(), postForLocation(): URI로 POST, postfix를 반환한다.
- GET: getForObject(), getForEntity(): URI로 GET하고 postfix를 반환한다.
HttpEntity
Spring에서 제공하는 HttpEntity는 http 프로토콜을 이용하는 통신의 header와 body 관련 정보를 저장할 수 있게 한다.
RequestEntity, ResponseEntity
- ResponseEntity: HttpEntity를 상속받아 statusCode(HttpStatus)를 추가한 클래스
- RequestEntity: HttpEntity를 상속받아 HttpMethod(GET, POST, PUT, DELETE 등)와 uri를 추가한 클래스
@RestController
- 객체를 간단히 JSON/XML 타입으로 반환하는 REST 서비스를 위한 컨트롤러
- @ResponseBody 없이도 컨트롤러를 통해 반환되는 Http Response가 자동으로 JSON으로 변환된다.