Notice
Recent Posts
Recent Comments
Link
DESCRIBE
SPRING - RestTemplate으로 Http통신하기(boring code 줄이기) 본문
RestTemplate를 적용하려는 팀원들에게 도움이 되고자 정리해봅니다.
HTTP통신에는 URLConnection과 HttpClient가 있는데, 보통 HttpClient를 사용해왔다.
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("URI");
CloseableHttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
URIconnection과 비교했을 때
HttpClient 방식은 1) 모든 응답코드를 받을 수 있고, 2) 타임아웃 3) 쿠키제어도 가능하다.
소켓통신 하나를 위해선 늘 위의 코드들을 반복하며 Response의 ContentType에 따라 json, xml라이브러리를
사용한 별도 로직이 또 들어갔다. 뭔가 저 지루한 코드들을 하나로 묶고 싶었고, 분명 다른 사람들도 그렇게 느낄 거라 생각했다.
(CTO 말씀으론 이런 상황일때엔 내가 원하는 도구를 똑똑한 놈들이 만들어뒀을 거라 하셨다. 역시나나나나나)
RestTemplate
하나의 행위를 위해서 반복하는 이 지루한 코드를 한 줄로 바꿔주는 RestTemplate!
Respnose 데이터를 JSON, XML 데이터로 쉽게 받을 수 있으며, 정의해둔 VO 객체로도 받을 수 있다.
- XML 데이터를 VO객체로 변환하시려면 JAXB 마샬링, 언마샬링 참고하시면 됩니다, 저의 경우엔 response XML 계층 구조가 복잡하여 VO클래스 가독성이 떨어지는 단점이 있습니다.
HttpClient의 HTTP통신 코드를 RestTemplate를 사용하면 아래와 같다.
RestTemplate restTemplate = new RestTemplate(); //현재는 Bean에 등록하여 사용중
String responseStr = restTemplate.getForObject("URI", String.class)
(이것은 혁명)
Reference
Comments