카테고리 없음

RestTemplate

백수왕 2023. 4. 9. 21:57

RestTemplate

RestTemplate은 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다.

HTTP 서버와의 통신을 단순화한 이 템플릿을 이용하면 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다.RestTemplate은 기본적으로 동기 방식으로 처리되며 비동기 방식으로 사용하고 싶을 경우 AsynRestTemplate을 사용하면 된다.

RestTemplate의 특징

  • HTTP 프로토콜의 메서드에 맞는 여러 메서드를 제공한다
  • RESTful 형식을 갖춘 템플릿이다
  • HTTP 요청 후 JSON, XML, 문자열 등의 다양한 형식으로 응답을 받을 수 있다.
  • 블로킹 I/O 기반의 동기 방식을 사용한다
  • 다른 API를 호출할 떄 HTTP 헤더에 다양한 값을 설정할 수 있다.

 

RestTemplate 동작 원리

  1. 애플리케이션에서 RestTemplate 선언하고 URI와 HTTP메서드, Body 등 설정
  2. 외부 API로 요청을 보내게 되면 RestTemplate에서 HttpMessageConverter를 통해 requestEntity를 요청 메시지로 변환
  3. RestTemplate에서는 변환된 요청 메시지를 ClientHttpRequestFactory를 통해 ClientHttpRequest로 가져온 후 외부 API로 요청을 보낸다.
  4. 외부에서 요청에 대한 응답을 받으면 RestTemplate은 ResponseErrorHandler로 오류를 확인하고, 오류가 있다면 ClientHttpResponse에서 응답 데이터를 처리한다.
  5. 받은 응답 데이터가 정상이라면 다시 한번 HttpMessageConverter를 거쳐 자바 객체로 변환해서 애플리케이션으로 반환한다.