web/Spring

Spring에서 url 요청하는 RestTemplate 설명

반응형

Spring 기반 프로젝트 진행 시 URL을 요청할 때가 있다. 

이를 Apache의 HttpClient 라이브로리를 사용하여 할 수 있지만, 스프링 프로젝트에서는 SpringTemplate를 사용하여 쉽게 요청할 수 있다. (httpClient와 RestTemplate의 차이는 하단의 링크참조)

사용법은 아주 간단하다. 각 요청 Method 마다 하단의 메소드를 이용하여 호출하기만 하면된다.

1. Get


1
2
3
4
5
RestTemplate restTemplate = new RestTemplate();
String fooResourceUrl
  = "http://localhost:8080/spring-rest/foos";
ResponseEntity<String> response
  = restTemplate.getForEntity(fooResourceUrl + "/1", String.class);
cs




2. Post


1
2
3
4
5
6
ClientHttpRequestFactory requestFactory = getClientHttpRequestFactory();
RestTemplate restTemplate = new RestTemplate(requestFactory);
 
HttpEntity<Foo> request = new HttpEntity<>(new Foo("bar"));
Foo foo = restTemplate.postForObject(fooResourceUrl, request, Foo.class);
 
cs



PUT과 DELETE는 하단 참조페이지에서 확인가능하다.

또한 이런 RestTemplate 기능에서 비동기로 결과값을 받을 수 있는 라이브러리가 추가되었다.
Spring 4에 추가된 AsyncRestTemplate를 이용하면 url을 요청하고 비동기로 결과를 받을 수 있다. 

사용법은 다음과 같다.



1
ListenableFuture<ResponseEntity<Map>> entity = asyncRestTemplate.getForEntity("https://httpbin.org/get", Map.class); 
cs




각 사례별 자세한 설명 (httpClient와 비교) 
https://vnthf.github.io/blog/Java-RestTemplate%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC/ 

Spring API 문서 
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html 

자세한 사용법 
http://www.baeldung.com/rest-template



반응형