스프링 RestTemplate(1) 이론편

lilseongwon·2022년 8월 19일
3

기술

목록 보기
1/2
post-thumbnail

RestTemplate?✍

RestTemplate이란 스프링 3.0부터 스프링에서 지원하는 http 통신에 유용하게 쓸 수 있는 템플릿이다.
HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지킨다.

RestTemplate의 장점🔮

RestTemplate은 기본적으로 HttpUrlConnection으로 구현되어 있다. HttpUrlConnection이나 다른 HTTP client API를 사용하면 요청을 할 때마다 같은 과정의 코드를 반복해야 하지만

RestTemplate은 고수준 API이므로 위의 모든 과정을 백그라운드에 처리되도록 하고 개발자는 반복적 코드 작성을 피할 수 있다.

RestTempate의 동작 원리🔨

  • HttpClient는 HTTP를 사용하여 통신하는 범용 라이브러리
  • RestTemplate는 HttpClient를 추상화(HttpEntity의 json, xml 등)해서 제공

1. 어플리케이션이 RestTemplate를 생성하고, URI, HTTP 메소드 등의 헤더를 담아 요청한다.

2. RestTemplate는 HttpMessageConverter를 사용하여 requestEntity를 요청 메세지로 변환한다.

  • HttpMessageConverter는 HTTP API처럼 JSON 데이터를 HTTP 메시지 바디 내 직접 읽거나 쓰는 경우 사용.
    requestEntity를 canRead()를 사용해 읽고 메세지로 반환

3. RestTemplate는 ClientHttpRequestFactory로 부터 ClientHttpRequest를 가져와서 요청을 보낸다.

  • ClientHttpRequest = 클라이언트 요청

4. ClientHttpRequest 는 요청메세지를 만들어 HTTP 프로토콜을 통해 서버와 통신한다.

5. RestTemplate 는 ResponseErrorHandler 로 오류를 확인하고 있다면 처리로직을 태운다.

6. ResponseErrorHandler 는 오류가 있다면 ClientHttpResponse 에서 응답데이터를 가져와서 처리한다.

7. RestTemplate 는 HttpMessageConverter 를 이용해서 응답메세지를 java object(Class responseType) 로 변환한다.

8. 어플리케이션에 반환된다.

다음 포스팅에서 계속

https://velog.io/@lilseongwon/%EC%8A%A4%ED%94%84%EB%A7%81-RestTemplate2-%EC%98%88%EC%A0%9C


참고

글에서 잘못된 점이나 궁금한 점은 댓글로 남겨주세요🧐

profile
스프린트가 아닌 사이클링

0개의 댓글