2023.09.08 - RestTemplate

mjjin·2023년 9월 7일
0

RestTemplate

RestTemplate은 Spring 3.0 부터 지원하는 템플릿으로 Spring에서 HTTP 통신을 RESTful 형식에 맞게 손쉬운 사용을 제공해주는 템플릿이다. Rest API 서비스를 요청후 응답 받을 수 있도록 설계되었으며 HTTP 프로토콜의 메소드(ex. GET, POST, DELETE, PUT)들에 적합한 여러 메소드들을 제공한다. Java에서 사용되는 다른 템플릿(ex. JdbcTemplate)들 처럼 단순 메소드 호출 만으로 복잡한 작업을 쉽게 처리할 수 있는 것이 특징이다.

RestTemplate의 특징

Spring 3.0 부터 지원하는 Spring의 HTTP 통신 템플릿
HTTP 요청 후 JSON, XML, String 과 같은 응답을 받을 수 있는 템플릿
Blocking I/O 기반의 동기방식을 사용하는 템플릿
RESTful 형식에 맞추어진 템플릿
Header, Content-Tpye등을 설정하여 외부 API 호출
Server to Server 통신에 사용

RestTemplate의 동작원리

애플리케이션이 RestTemplate을 생성하고 URI, HTTP 메소드 등을 헤더에 담아 요청
RestTemplate은 HttpMessageConverter를 사용하여 RequestEntity를 요청메세지로 변환
RestTemplate은 ClitentHttpRequestFactory로 부터 ClientHttpRequest를 가져온후 요청을 보냄
ClientHttpRequest는 요청메세지를 만들어 HTTP 프로토콜을 통해 서버와 통신
RestTemplate은 ReponseErrorHandler로 오류를 확인
ResponseErrorHandler는 오류가 있다면 ClientHttpResponse에서 응답 데이터를 가져와서 처리
RestTemplate은 HttpMessageConverter를 이용해서 응답메세지를 Java Object(Response Type)로 변환
애플리케이션에 반환

RestTemplate의 메서드

메소드HTTP설명
getForObjectGETHTTP GET 요청 후 결과는 객체로 반환
getForEntityGETHTTP GET 요청 후 결과는 ResponseEntity로 반환
postForLocationPOSTHTTP POST 요청 후 결과는 헤더에 저장된 URL을 반환
postForObjectPOSTHTTP POST 요청 후 결과는 객체로 반환
postForEntityPOSTHTTP POST 요청 후 결과는 ResponseEntity로 반환
deleteDELETEHTTP DELETE 요청
headForHeadersHEADERHTTP HEAD 요청 후 헤더정보를 반환
putPUTHTTP PUT 요청
patchForObjectPATCHHTTP PATCH 요청 후 결과는 객체로 반환
optionsForAllowOPTIONS지원하는 HTTP 메소드를 조회
exchangeAny원하는 HTTP 메소드 요청 후 결과는 ResponseEntity로 반환
executeAnyRequest/Response의 콜백을 수정

0개의 댓글