둘다 Spring Boot Application에서 외부 url을 호출하는 기능이다. 하지만 RestTemplate과 WebClient에는 서로 다른 차이점들이 있다.
특징: 동기적, HTTP 프로토콜 통신 지원, Restful 형식을 갖춤, JSon&Xml등 다양한 형태의 요청값을 처리할 수 있음, Header값 설정이 자유로움
예시코드
RestTemplate을 사용한 간단한 GET 요청 예시:
RestTemplate restTemplate = new RestTemplate();
String url = "https://api.example.com/data";
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
String result = response.getBody();
여기서 goForEntity의 경우에는 url경로의 결과를 받아 String.class로 변환한다.
특징: 비동기적, 반응형 프로그래밍 지원, HTTP와 WebSocket 프로토콜 지원, 더 적은 하드웨어 리소스로 동시성 처리 가능
예시코드
WebClient를 사용한 간단한 Get 요청 예시
Webclient webClient = WebClient.create("baseUrl");
ResponseEntity<String> result = webClient.get().uri("/{pathVar}",pathVar)
.retrieve()
.toEntity(변환할 클래스); 마지막에 block();으로 끝나면 비동기가 아니라 동기로 작업한다는 것을 알리는 것이다.
여기서 만약 webClient를 복제하고 싶다면 mutate.build()를 추가해주면 된다.
Webclient web2 = webClient.mutate().build();