본문 바로가기
Spring Boot

Spring Boot - 서버 간 통신 RestTemplate 정의

by sinabeuro 2021. 9. 25.
728x90

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 라이브러리를 사용해서 변환해야 했을 것이다.

 

  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. 어플리케이션에 반환된다.

출처: 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

 

https://velog.io/@soosungp33/%EC%8A%A4%ED%94%84%EB%A7%81-RestTemplate-%EC%A0%95%EB%A6%AC%EC%9A%94%EC%B2%AD-%ED%95%A8

 

스프링 RestTemplate 정리(요청 함)

RestTemplate

velog.io

 

728x90

'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

댓글