본문 바로가기
Spring

RestTemplate 사용법

by 수앙 2015. 2. 20.

RestTemplate 란?

 - REST 서비스를 연동하기 위해 스프링에서 제공하는 객체

 - Spring 4.1.5 기준

 

RestTemplate 설정

아래 말고도 생성자를 통한 생성 방식도 있다.

■ XML

messageConverter는 선언할 경우 선언한 메시지 컨버터만 지원한다.

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate" />

또는

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
	<property name="requestFactory">
		<bean class="org.springframework.http.client.SimpleClientHttpRequestFactory">
			<property name="connectTimeout" value="5000" />
			<property name="readTimeout" value="5000" />
		</bean>
	</property>
	<property name="messageConverters">
    	<list>
        	<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
		</list>
	</property>
</bean>

 

Java

RestTemplate restTemplate = new RestTemplate();

 

기본적으로 RestTemplate 선언만 하면 포함되는 HttpMessageConverter 들이 있다.

ByteArrayHttpMessageConverter : 바이트배열 처리

StringHttpMessageConverter : 문자열 처리

ResourceHttpMessageConverter

SourceHttpMessageConverter

AllEncompassingFormHttpMessageConverter

 

아래 HttpMessageConverter 들은 jar가 있을 경우 포함된다.

AtomFeedHttpMessageConverter

RssChannelHttpMessageConverter

MappingJackson2XmlHttpMessageConverter 나 Jaxb2RootElementHttpMessageConverter

MappingJackson2HttpMessageConverter 나 GsonHttpMessageConverter

 

또 다른 기본 값 ClientHttpRequestFactory가 있다.

설정 명시가 없을 경우 기본적으로 아래 객체가 생성된다.

SimpleClientHttpRequestFactory

 

HTTP Method에 따라 메소드를 제공한다.

 HTTP Method

 RestTemplate methods 

 DELETE

 delete 

 GET

 getForObject

 getForEntity

 HEAD

 headForHeaders

 OPTIONS

 optionsForAllow

 POST

 postForLocation

 postForObject

 PUT

 put

 any

 exchange

 execute

 

사용법

가장 많이 쓰이는 GET과 POST만 알아보고자 한다.

 

 GET

RestTemplate restTemplate = new RestTemplate();

URI uri = UriComponentsBuilder.fromHttpUrl("http://domain:port")
	.queryParam("key", "value")
	.build().toUri();

String response = restTemplate.getForObject(uri, String.class);

또는

ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class);

 

 POST

request가 null일 경우 HttpEntity.EMPTY가 생성

request가 있을 경우 HttpEntity를 이용해 작성하거나 Object 형태(보통 MultiValueMap 타입 사용)

multipart/form-data

RestTemplate restTemplate = new RestTemplate();

// request에 파일은 FileSystemResource 타입으로 작성
String response = restTemplate.postForObject(url, request, String.class);

 

 x-www-form-urlencoded

RestTemplate restTemplate = new RestTemplate();

// request MultiValueMap 사용
String response = restTemplate.postForObject(url, request, String.class);

 

 raw (text/json/xml)

RestTemplate restTemplate = new RestTemplate();

// test, json, xml 형태의 String 타입 사용
String response = restTemplate.postForObject(url, request, String.class);

 

POST 예제는 테스트 필요.

 

끝.

'Spring' 카테고리의 다른 글

Spring 4.2.4 + Querydsl 3.7.1  (0) 2016.02.22
Spring WebSocket  (3) 2015.09.13
Spring quartz JMX 사용방법  (0) 2013.02.15
spring 2.5.x 컨트롤러 설명  (0) 2012.05.31
Spring-2.5.6 MVC  (0) 2011.10.22

댓글