본문 바로가기

프로그래밍/Spring Boot

Spring Boot_RestTemplate

반응형

RestTemplate

: RestTemplate은 Spring Framework에서 제공하는 HTTP 통신을 간편하게 처리할 수 있는 클래스이다.
org.springframework.web.client.RestTemplate 패키지에 존재한다.
 
RESTful 웹 서비스와의 통신을 위해 주로 사용되고 기본적으로 동기 방식으로 처리되며,
비동기 방식으로 처리하고 싶을 경우 AsyncRestTemplate을 사용하면 된다.
 
RestTemplate은 요청과 응답에 대한 결과값을 가지고 있다.
 

클라이언트 요청 → Server1(나) 요청 → Server2(Resource Server)
클라이언트 응답 ← Server1(나) 응답 ← Server2(Resource Server)

 
 

RestTemplate의 대표적인 기능

  1. HTTP 요청 메서드 지원 : GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 사용하여 원격 서버에 요청을 보낼 수 있다.
  2. URL 변수와 쿼리 파라미터 지원 : URL에 동적인 값을 전달하거나 쿼리 파라미터를 추가할 수 있다.
  3. 요청과 응답의 데이터 변환 : 요청과 응답의 데이터를 다양한 타입으로 변환할 수 있다. 
    JSON, XML 등의 데이터 형식을 자바 객체로 변환하거나, 자바 객체를 JSON, XML 등의 데이터 형식으로 변환할 수 있다.
  4. 요청과 응답의 에러 처리 : 원격 서버로부터의 응답이 에러 상태 코드를 포함할 경우, 예외 처리를 통해 에러를 처리할 수 있다.
  5. 인터셉터 지원 : 요청과 응답의 전/후 처리를 위해 인터셉터를 등록할 수 있다.

 
 

RestTemplate의 동작 원리

  1. 어플리케이션이 RestTemplate을 생성하고, URI 등의 헤더를 담아 요청한다.
  2. RestTemplate은 HttpMessageConverter를 사용하여 requestEntity를 요청 메세지로(HttpMessage) 변환한다.
  3. RestTemplate은 ClientHttpRequestFactory로 부터 ClientHttpRequest를 가져와서 요청을 보낸다.
  4. ClientHttpRequest는 요청 메세지를 만들어 HTTP 프로토콜을 통해 서버와 통신한다.
  5. RequestTemplate은 ResponseErrorHandler로 오류를 확인하고 있다면 처리 로직을 태운다.
  6. ResponseErrorHandler는 오류가 있다면 ClientHttpResponse에서 응답 데이터를 가져와서 처리한다.
  7. RestTemplate은 HttpMessageConverter를 이용해서 응답 메세지를 java object(Class responseType)로 변환한다.
  8. 어플리케이션에 반환된다.

 
 

 RestTemplate 대표적 메서드

RestTemplate Method HTTP Method 설명
getForEntity GET get 요청을 보내고 ResponseEntity로 응답을 받음
getForObject GET get 요청을 보내고 java object로 매핑받아서 반환 받음
exchange Any 헤더 세팅해서 HTTP Method로 요청 보내고 ResponseEntity로 반환 받음
put PUT PUT 형식으로 요청
delete DELETE DELETE 형식으로 요청
postForLocation POST post 요청을 보내고 java.net.URI로 반환받음
postForObject POST post 요청을 보내고 Object로 반환받음
optionsForAllow OPTIONS 해당 URI에서 지원하는 HTTP 메서드를 조회
execute Any 요청과 응답에 대한 콜백 수정

 

반응형