Rest Client란 Rest API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴 또는 라이브러리를 말합니다. Spring에서는 객체로 간편하게 Rest 방식 API를 호출할 수 있는 RestTemplate을 내장 클래스로 지원합니다.
Server와 Client의 관계는 resource를 제공하고 받는 상대적인 관계입니다. Spring은 보통 Frontend 측에 Resource를 제공하는 Server의 역할을 주로 하게 됩니다. 하지만 외부 OpenApi 등을 이용하는 것처럼 HTTP 통신을 통해서 다른 서버의 리소스를 이용한다면 그 때 만큼은 클라이언트의 역할을 한다고 할 수 있습니다.
- Spring 3.0 부터 지원하는 Spring의 HTTP 통신 템플릿
- HTTP 요청 후 JSON, XML, String 과 같은 응답을 받을 수 있는 템플릿
- Blocking I/O 기반의 동기방식을 사용하는 템플릿
- RESTful 형식에 맞추어진 템플릿
- Header, Content-Tpye등을 설정하여 외부 API 호출
- Server to Server 통신에 사용
보통 OpenApi 문서에 어떤 식으로 요청해야 하는지 자세히 설명되어 있습니다.
Header는 Spring Framework에서 제공하는 HttpHeaders 클래스에 추가합니다.
OpenApi 문서에서 요구한 그대로 Header를 만들면 됩니다.
Body는 보통 key, value의 쌍으로 이루어지기 때문에 Java에서 제공해주는 MultiValueMap 타입을 사용합니다. 위 사진에서는 객체 하나를 생성해서 사용했습니다.
만들어진 Header와 Body를 Spring Framework에서 제공하는 HttpEntity 클래스에 추가하여 사용합니다.
위 사진에서는 간단하여 주소가 그대로 써져 있지만, Get방식의 경우 넘겨야 하는 Param을 URI를 통해 넘기게 되기 때문에 복잡해지는 경우가 있습니다.
방식은 String 변수 사용, StringBuffer 객체 사용, URI 객체 사용, UriComponents 객체 사용 등 여러가지가 있습니다. 요점은 어떠한 방식으로든 URI를 완성해서 보내는 것입니다.
이제 RestTemplate의 exchange("요청 URL", HTTP메서드 종류, HttpEntity, 응답내용 매핑 객체) 메서드를 통해 OpenApi Server와 통신을 하면 됩니다.
https://velog.io/@hyoreal51/Spring-Rest-Client
https://blog.naver.com/hj_kim97/222295259904