[spring] RestTemplate 정리
1. RestTemplate이란?
- spring 3.0부터 지원
- spring에서 제공하는 http 통신 템플릿
- http 통신을 단순화
- RESTful 원칙을 지킴 (json, xml을 쉽게 응답 받음)
- 기계적이고 반복적인 코드들을 깔끔하게 정리
2. 주요 메서드
메서드 | HTTP | 설명 |
---|---|---|
getForObject | GET | URL 주소로 GET 요청, return 객체 |
getForEntity | GET | URL 주소로 GET 요청, return ResponseEntity |
postForLocation | POST | URL 주소로 POST 요청, return 헤더에 저장된 URI |
postForObject | POST | URL 주소로 POST 요청, return 객체 |
postForEntity | POST | URL 주소로 POST 요청, return ResponseEntity |
execute | any | Request/ Response 콜백을 수정할 수 있음 |
exchange | any | HTTP 헤더를 새로 만들 수 있고 HTTP의 모든 메서드도 사용 가능 |
3. 사용
- Object로 받기
getForObject나 postForObject를 사용할 때, 응답 xml이나 json에 맞는 Object가 필요함
1) @XmlElement나 @JsonProperty를 사용하여 맵핑해주거나, 2) String으로 받아 JSONParser와 같이 parser를 이용하는 방법등이 있습니다. - 에러처리
DefaultResponseErrorHandler를 사용하여 HTTP Error 를 제어,restTemplate.setErrorHandler를 통해 커스텀 핸들러를 등록할 수 있습니다. - 비동기 처리
RestTemplate는 동기처리이고, 비동기 처리를 위해서는 org.springframework.web.client.AsyncRestTemplate를 사용해야 합니다.
4. 사용예시
Map<String, Object> map = new HashMap<>(); // 요청시 보낼 데이터
map.put("data, data);
RestTemplate restTemplate = new RestTemplate();
String result = "";
try{
result = restTemplate.postForObject([요청보낼 uri], map, String.class);
}catch (Exception e) {
e.printStackTrace();
}
JSONParser jsonParser = new JSONParser();
Object obj = jsonParser.parse(result);
JSONObject jsonObj = (JSONObject) obj;
5. 동작 원리
1. RestTemplate를 생성하고, URI, HTTP메소드 등의 헤더를 담아 요청
2. RestTemplate는 HttpMessageConverter를 사용하여 requestEntity를 요청메세지로 변환
3. RestTemplate는 ClientHttpRequestFactory로 부터 ClientHttpRequest를 가져와 요청
4. ClientHttpRequest는 요청메세지를 만들어 HTTP 프로토콜을 통해 서버와 통신
5. RestTemplate는 ResponseErrorHandler로 오류를 확인 후 있다면 처리
6. ResponseErrorHandler는 오류가 있다면 ClientHttpResponse에서 응답데이터를 가져와서 처리
7. RestTemplate는 HttpMessageConverter를 이용해 응답메세지를 java object(Class responseType)로 변환
8. 어플리케이션에 반환
참고
1. RestTemplate (정의, 특징, URLConnection, HttpClient, 동작원리, 사용법, connection pool 적용)
2. 스프링 RestTemplate 정리(요청 함)
Author And Source
이 문제에 관하여([spring] RestTemplate 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@0_sujeong/spring-RestTemplate-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)