Spring Boot - 서버 간 통신 파트는 RestTemplate 라이브러리의 개념편과 예제편으로 따로 정리하여 포스트할 예정입니다.
바로 RestTemplate 라이브러리 개념부터 가겠습니다.
RestTemplate이란
spring 3.0 부터 지원한다. 스프링에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿이며, HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지킨다.
jdbcTemplate 처럼 RestTemplate 도 기계적이고 반복적인 코드들을 깔끔하게 정리해준다
특징
- 기계적이고 반복적인 코드를 최대한 줄여줌
- RESTful형식에 맞춤
- json, xml 를 쉽게 응답받음
출처: https://sjh836.tistory.com/141 [빨간색코딩]
RestTemplate 의 동작원리
org.springframework.http.client 패키지에 있다. HttpClient는 HTTP를 사용하여 통신하는 범용 라이브러리이고, RestTemplate은 HttpClient 를 추상화(HttpEntity의 json, xml 등)해서 제공해준다.
따라서 내부 통신(HTTP 커넥션)에 있어서는 Apache HttpComponents 를 사용한다.
만약 RestTemplate 가 없었다면, 직접 json, xml 라이브러리를 사용해서 변환해야 했을 것이다.
- 어플리케이션이 RestTemplate를 생성하고, URI, HTTP메소드 등의 헤더를 담아 요청한다.
- RestTemplate 는 HttpMessageConverter 를 사용하여 requestEntity 를 요청메세지로 변환한다.
- RestTemplate 는 ClientHttpRequestFactory 로 부터 ClientHttpRequest 를 가져와서 요청을 보낸다.
- ClientHttpRequest 는 요청메세지를 만들어 HTTP 프로토콜을 통해 서버와 통신한다.
- RestTemplate 는 ResponseErrorHandler 로 오류를 확인하고 있다면 처리로직을 태운다.
- ResponseErrorHandler 는 오류가 있다면 ClientHttpResponse 에서 응답데이터를 가져와서 처리한다.
- RestTemplate 는 HttpMessageConverter 를 이용해서 응답메세지를 java object(Class responseType) 로 변환한다.
- 어플리케이션에 반환된다.
출처: https://sjh836.tistory.com/141 [빨간색코딩]
RestTemplate 주요 메소드
간략한 예제를 살펴보자면 다음과 같습니다.
RestTemplate restTemplate = new RestTemplate();
//String result = restTemplate.getForObject(uri, String.class);
ResponseEntity<UserResponse> result = restTemplate.getForEntity(uri, UserResponse.class);
System.out.println(result.getStatusCode());
System.out.println(result.getBody());
RestTemplate 인스턴스를 생성하여, getForEntity 메소드를 호출하면, 메소드에 넘긴 uri를 통해서 http 서버 간 통신이 이루어지게 됩니다.
그 후 response 값을 받아오게 되죠.
uri는 UriComponentsBuilder 라이브러리를 통해서 생성합니다.
UriComponentsBuilder 라이브러리 사용은 다음 예제편에서 상세하게 다루겠습니다.
https://sjh836.tistory.com/141
RestTemplate (정의, 특징, URLConnection, HttpClient, 동작원리, 사용법, connection pool 적용)
참조문서 : https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html 1. RestTemplate이란? spring 3.0 부터 지원한다. 스프링에서 제공하는 http..
sjh836.tistory.com
스프링 RestTemplate 정리(요청 함)
RestTemplate
velog.io
'Spring Boot' 카테고리의 다른 글
Spring Boot - Swagger (0) | 2021.10.01 |
---|---|
Spring Boot - 서버 간 통신 예제 (0) | 2021.09.26 |
Spring Boot - Interceptor (0) | 2021.09.23 |
Spring Boot - Exception 구현 예제 (0) | 2021.09.13 |
Spring Boot - Filter (0) | 2021.09.12 |
댓글