본문 바로가기
📚 개발 공부

[RestTemplate] RestTemplate을 이용한 Restful API 호출

by cheonvi 2021. 12. 20.

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);