728x90
반응형
1. RestTemplate 란
RestTemplate은 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다. HTTP 서버와의 통신을 단순화한 이 템플릿을 이용하면 RESTFUL 원칙을 따르는 서비스를 편리하게 만들 수 있다. RestTemplate은 기본적으로 동기 방식으로 처리되고, 현재 지원 중단(deprecated)된 상태이다.
RestTemplate 특징
- HTTP 프로토콜의 메서드에 맞는 여러 메서드 제공
- RESTful 형식을 갖춘 템플릿
- HTTP 요청 후 JSON, XML, 문자열 등의 다양한 형식으로 응답을 받을 수 있다.
- 블로킹(blocking) I/O 기반의 동기 방식 사용
- 다른 API를 호출할 때 HTTP 헤더에 다양한 값 설정 가능
(1) RestTemplate 동작 원리
애플리케이션에서 RestTemplate를 선언하고 URI와 HTTP 메서드, Body 등을 설정한다.
그리고 외부 API로 요청을 보내게 되면 RestTemplate에서 HttpMessageConverter를 통해 RequestEntity를 요청 메시지로 변환한다.
RestTemplate에서는 변환된 요청 메시지(RequestEntity)를 CLientHttpRequestFactory를 통해 ClientHttpRequest로 가져온 후 외부 API로 요청을 보낸다.
외부에서 요청에 대한 응답을 받으면 RestTemplate은 ResponseErrorHandler로 오류를 확인하고, 오류가 있다면 ClientHttpResponse에서 응답 데이터를 처리한다.
받은 응답 데이터가 정상적이라면 다시 한번 HttpMessageConverter를 거져 자바 객체로 변환하여 애플리케이션으로 반환한다.
(2) RestTemplate의 대표적인 메서드
메서드 | HTTP 형태 | 설명 |
getForObject | GET | GET 형식으로 요청한 결과를 객체로 반환 |
getForEntity | GET | GET 형식으로 요청한 결과를 ResponseEntity 결과로 반환 |
postForLocation | POST | POST 형식으로 요청한 결과를 헤더에 저장된 URI로 반환 |
postForObject | POST | POST 형식으로 요청한 결과를 객체로 반환 |
postForEntity | POST | POST 형식으로 요청한 결과를 ResponseEntity 형식으로 반환 |
delete | DELETE | DELETE 형식으로 요청 |
put | PUT | PUT 형식으로 요청 |
exchange | any | HTTP 헤더를 임의로 추가할 수 있고, 어떤 메서드 형식에서도 사용할 수 있음 |
execute | any | 요청과 응답에 대한 콜백을 수정 |
반응형
'SpringBoot' 카테고리의 다른 글
SpringSecurity - antMatchers() 와 requestMatchers() 차이 (0) | 2024.03.11 |
---|---|
SpringBoot 3.x 스프링 시큐리티 (Spring security) (0) | 2024.03.11 |
액추에이터 (0) | 2024.03.10 |
예외 처리 (0) | 2024.02.28 |
유효성 검사 (1) | 2024.02.28 |