Skip to content

Spring REST

hyunwoo9301 edited this page Jul 22, 2017 · 3 revisions

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으로 변환된다.

Clone this wiki locally