오픈 API를 사용하거나 서버 아키텍처가 MSA와 같은 형태라면 서버와 서버 간의 HTTP 호출
이 필요해진다. 이렇게 다른 서버의 API endpoint를 호출할 때 RestTemplate
을 많이 쓴다.
Spring에서 제공하는 HTTP Client
로 REST API
를 호출하기 위한 함수를 제공하는 클래스이다. 고수준의 API를 제공하므로 API endpoint 호출을 간잔하게 처리해준다.
Spring 4.x부터 지원하는 Spring의 HTTP 통신 템플릿으로, HTTP 요청 후 JSON, XML, String과 같은 응답
을 받을 수 있는 템플릿이다. RestTemplate은 이름처럼 RESTful 형식을 지원
한다. 또한, 반복적인 코드를 줄여주고, Blocking I/O기반의 Synchronouse API이다.
RestTemplate와의 다른 HTTP Client로는 HttpURLConnection, HttpClient(HttpComponent), WebClient(이때, WebClient는 NonBlocking
방식이며, 비동기
역시 지원하는 http client이다.) 등이 있다.
1. 애플리케이션 내부에서 REST API에 요청하기 위해 RestTemplate의 메서드를 호출한다.
2. RestTemplate은 MessageConverter를 이용해 java object를 request body에 담을 message(JSON etc.)로 변환한다. 메시지 형태는 상황에 따라 다름
3. ClientHttpRequestFactory에서 ClientHttpRequest을 받아와 요청을 전달한다.
4. 실질적으로 ClientHttpRequest가 HTTP 통신으로 요청을 수행한다.
5. RestTemplate이 에러핸들링을 한다.
6. ClientHttpResponse에서 응답 데이터를 가져와 오류가 있으면 처리한다.
7. MessageConverter를 이용해 response body의 message를 java object로 변환한다.
8. 결과를 애플리케이션에 돌려준다.