Spring Boot

[spring boot]RestTemplate

라임오렌지원 2022. 10. 24. 23:53

이번에 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

 

728x90