Springboot 프레임워크를 사용하여 Restful API를 호출을 하기 위해서는 RestTemplate 클래스를 이용하여 호출하게 됩니다.
RestTemplate를 사용하기 앞서서 Springboot에서는 @Bean를 등록하여 @autowired 어노테이션을 사용할 수 있다.
■ 구성
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
■ 사용
@autowired
RestTemplate restTemplate;
public <T> ResponseEntity<T> procRestTemplate(String reqUrl, HttpMethod httpMethod, Class<T> responseType,Map<String,Object> uriVariables) {
HttpHeaders reqHeaders = new HttpHeaders();
reqHeaders.add(AUTHORIZATION_HEADER_KEY,Authorization);
HttpEntity<Object> reqEntity = new HttpEntity<>(null, reqHeaders);
String url = apiUrl+reqUrl;
if(LOGGER.isDebugEnabled())
LOGGER.debug("procRestTemplate reqUrl :{}", url);
ResponseEntity<T> result = restTemplate.exchange(url, httpMethod,null, responseType,uriVariables);
if(LOGGER.isDebugEnabled())
LOGGER.debug("procRestTemplate reqUrl :: {} || resultBody :: {}", url, result.getBody().toString());
return result;
}
■ 사용 -2
String url="http://localhost:8080/sensing/rawdata?offer={offer}&sensorId={sensorId}&time={time}";
Map<String, Object> params =new HashMap<String, Object>();;
Map<String, Object> variables=new HashMap<String, Object>();;
params.put("offer", tempSensor.getCustomerId());
variables.put("offer", tempSensor.getCustomerId());
variables.put("sensorId", tempSensor.getSensorId());
variables.put("time", DateUtil.getPeriodTime(CURR_DATE_TIMEZONE, System.currentTimeMillis(), 300,300,"yyyyMMddHHmmss"));
ResponseEntity<SENSOR> res = procRestTemplate(url, HttpMethod.POST, params, SENSOR.class,variables);
ResponseEntity<SENSOR> res = procRestTemplate(url, HttpMethod.GET,null, SENSOR.class,variables);