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 |
댓글