Rest Client
**REST API** 서버에 HTTP 요청을 보낼 때 사용하는 '클라이언트 툴' 혹은 '클라이언트 라이브러리'
ex) POSTMAN.
**REST API**
웹에서 사용되는 Data나 Resource를 HTTP URI로 표현하고, 해당 resource를 고유의 URI로 접근하는 방식.
ex) Controller 클래스의 핸들러 메서드 엔드포인트.
RestTemplate
Spring에서 지원하는 객체로, 간편하게 Rest 방식 API를 호출할 수 있는 Spring 내장 클래스.
Rest API 서비스를 요청 후 응답받을 수 있도록 설계되어 있으며,
HTTP 프로토콜의 메서드들에 적합한 여러 메서드를 제공한다.
[RestTemplate 동작 원리]
(1) 애플리케이션 내부에서 REST API에 요청하기 위해 RestTemplate의 메서드를 호출
(2) RestTemplate은 HttpMessageConverter를 이용해
java object(Resource)를 request body에 담을 Message(ex. JSON)으로 변환한다.
*Message 형태는 상황에 따라 달라질 수 있음.
(3) RestTemplate은 ClientHttpRequestFactory로부터 ClientHttpRequest를 가져와서 요청을 보낸다.
(4) ClientHttpRequest는 요청메시지를 만들어 HTTP 프로토콜을 통해 서버와 통신한다.
(5) RestTemplate는 ReponseErrorHandler로 오류를 확인하고 있다면 처리로직을 태운다.
(6) ResponseErrorHandler는 오류가 있다면 ClientHttpResponse에서 응답데이터를 가져와서 처리한다.
(7) HttpMessageConverter를 이용해 response body의 message(응답메시지)를 java object로 변환한다.
(8) 결과를 애플리케이션에 돌려준다.
*RestTemplate은 통신 과정을 ClientHttpRequestFactory (ClientHttpRequest, ClientHttpResponse)에 위임하고, ClientHttpRequestFactory의 실체는 HttpURLConnection, Apache HttpComponents, HttpClient와 같은 HTTP Client이다.
[정리]
웹 브라우저는 웹 서버로부터 HTML 컨텐츠를 제공받는 클라이언트 중 하나이다.
클라이언트, 서버의 역할은 이용할 리소스의 위치에 따라 동적인 존재이다.
Rest Client : Rest API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴, 클라이언트 라이브러리.
RestTemplate : 다른 원격지에 있는 BackEnd Server에 HTTP 요청을 보낼 수 있도록 정한 Rest Client API.
[RestTemplate 사용 단계]
1. RestTemplate 객체 생성.
2. HTTP 요청을 전송할 엔드포인트의 URI 객체 생성.
3. getForObject(), getForEntity(), exchange() 메소드를 이용해 HTTP 요청을 전송.
- RestTemplate 기능 예시 -
결제서비스, 카카오톡 등의 메시징 서비스, Google Map등 지도 서비스,
공공 데이터 포털 OPEN API, 기타 원격지 API 서버와의 통신
출처 https://dvdhan.tistory.com/92
#1-1. Rest Client
[Rest Client] Rest API 서버에 HTTP 요청을 보낼 때 사용하는 ‘클라이언트 툴’ 혹은 ‘클라이언트 라이브러리’ *REST API 웹에서 사용되는 Data나 Resource를 HTTP URI로 표현하고, 해당 resource를 고유의 URI
dvdhan.tistory.com
'백엔드 학습 과정 > Section 3 [Spring MVC, JDBC, JPA, RestDo' 카테고리의 다른 글
Section3. 회고 (0) | 2023.01.14 |
---|---|
#10. 애플리케이션 빌드 (0) | 2023.01.14 |
#9. API 문서화 (0) | 2023.01.14 |
#8. Spring MVC 테스팅 (0) | 2023.01.11 |
#7. Spring MVC 트랜잭션 (0) | 2023.01.11 |