이번에 spring boot 미니 프로젝트에서 open api 에 사용하고 있는 RestTemplate에 대해 찾아보고 정리해보려 한다.
RestTemplate
스프링에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿
Spring 3부터 지원 되고, REST API 호출이후 응답을 받을 때까지 기다리는 동기방식
메서드 | HTTP | 설명 |
getForObject | GET | 주어진 URL 주소로HTTP GET 메서드로 객체로 결과를 반환받는다. |
getForEntity | GET | 주어진 URL 주소로 HTTP GET메서드로 결과는 ResponseEntity로 반환 받는다. |
postForLocation | POST | POST 요청을 보내고 결과로 헤더에 저장된 URI를 결과로 반환받는다. |
postForObject | POST | POST 요청을 보내고 객체로 결과를 반환받는다. |
postForEntity | POST | POST 요청을 보내고 결과로 ResponseEntity로 반환받는다. |
delete | DELETE | 주어진 URL 주소로 HTTP DELETE 메서드를 실행한다. |
headForHeaders | HEADER | 헤더의 모든 정보를 얻을 수 있으면 HTTP HEAD 메서드를 사용한다. |
put | PUT | 주어진 URL 주소로 HTTP PUT 메서드를 실행한다. |
pactForObject | PATCH | 주어진 URL 주소로 HTTP PATCH 메서드를 실행한다. |
optionsForAllow | OPTIONS | 주어진 URL 주소에서 지원하는 HTTP 메서드를 조회한다. |
exchange | any | HTTP 헤더를 새로 만들 수 있고 어떤 HTTP 메서드도 사용가능하다. |
execute | any | Request/Response 콜백을 수정할 수 있다. |
참고사이트를 보면 여러 메서드와 예시문을 볼 수 있다.
나는 여기서 내가 이용한 메서드에 관해서만 정리해 보고자 한다.
1.
config 패키지를 생성하여 Tistory 디렉토리 생성 후, Bean 관리용 파일을 만들었다.
여기서 RestTemplate 을 @Bean 을 걸어두고
2.
@Service 서비스 로직 안에 RestTemplate 을 사용했다.
아직 수정 중이라 이 로직 또한 서비스에서 분리하거나 코드정리 좀 할 생각이다.
참고사이트를 참고해보면
get 요청에 header 값이 필요한 경우, get 메소드에서는 header를 추가 할 수 가 없다고 한다.
그래서 exchange 메서드를 사용해야 한다.
현재 responseDTO로 response를 받았는데
2-1.
DTO를 쓰기 전에는
이런 식으로 사용했다.
2-2.
DTO를 받았던 부분을 exchange 말고 다른 방식으로 바꿀 수 있다고 하여 참고 중인데
getForObject 이다.
URI 매개변수를 사용하는 것인데, URI 매개변수를 사용할 때는 URL 객체를 구성하여 호출해야 한다.
위에서 이미 builder에 넣었기 때문에 형식에 맞춰서 넣어주면 됐다.
형식 :
// public <T> T getForObject(java.net.URI url, Class<T> responseType)
String result = restTemplate.getForObject(uri, String.class);
참고사이트
https://juntcom.tistory.com/141
[spring] 스프링에서 사용하는 RestTemplate - http 라이브러리
RestTemplate이란 스프링에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿 Spring 3부터 지원 되었고 REST API 호출이후 응답을 받을 때까지 기다리는 동기방식이다 AsyncRestTemplate Spring 4에 추가된
juntcom.tistory.com
https://zeroco.tistory.com/118
RestTemplate 사용법 (1) - getForObject(), getForEntity()
백엔드 개발을 할때는 Server의 입장이 되어서 API를 제공해보는 것이 중요함. Client가 되어서 어떻게 실제로 서버에게 데이터를 던져주고, 받아오는지 알아보겠다. 1. 기본적인 RestTemplate사용 [GET]-
zeroco.tistory.com
https://wecandev.tistory.com/41
[스프링 인 액션] 7장 RestTemplate : REST 서비스 사용하기
7장 REST 서비스 사용하기 💻 실습 : https://github.com/cusbert/spring-in-action-5th 🎯 이 장에서 배우는 내용 RestTemplate 을 사용해서 REST API 사용하기 스프링에서 사용하는 REST API RestTemplate: 스프..
wecandev.tistory.com