카테고리 없음
RestTemplate
백수왕
2023. 4. 9. 21:57
RestTemplate
RestTemplate은 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다.
HTTP 서버와의 통신을 단순화한 이 템플릿을 이용하면 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다.RestTemplate은 기본적으로 동기 방식으로 처리되며 비동기 방식으로 사용하고 싶을 경우 AsynRestTemplate을 사용하면 된다.
RestTemplate의 특징
- HTTP 프로토콜의 메서드에 맞는 여러 메서드를 제공한다
- RESTful 형식을 갖춘 템플릿이다
- HTTP 요청 후 JSON, XML, 문자열 등의 다양한 형식으로 응답을 받을 수 있다.
- 블로킹 I/O 기반의 동기 방식을 사용한다
- 다른 API를 호출할 떄 HTTP 헤더에 다양한 값을 설정할 수 있다.
RestTemplate 동작 원리
- 애플리케이션에서 RestTemplate 선언하고 URI와 HTTP메서드, Body 등 설정
- 외부 API로 요청을 보내게 되면 RestTemplate에서 HttpMessageConverter를 통해 requestEntity를 요청 메시지로 변환
- RestTemplate에서는 변환된 요청 메시지를 ClientHttpRequestFactory를 통해 ClientHttpRequest로 가져온 후 외부 API로 요청을 보낸다.
- 외부에서 요청에 대한 응답을 받으면 RestTemplate은 ResponseErrorHandler로 오류를 확인하고, 오류가 있다면 ClientHttpResponse에서 응답 데이터를 처리한다.
- 받은 응답 데이터가 정상이라면 다시 한번 HttpMessageConverter를 거쳐 자바 객체로 변환해서 애플리케이션으로 반환한다.