Apach HttpClient5

스프링 6.x부터 도입되었다.

기존 WebClient + RestTemplate합친 새로운 서버투서버 통신용 클래스

스프링부트 3.2+이상부터는 Restclient 사용이 추천됨.

RestTemplate과의 차이점

비교 항목 RestTemplate RestClient
도입 시기 오래된(레거시) Spring 6.1 이후
비동기 지원 불가능 불가능(동기 전용)
내부 구현 Apache HttpClient 등 WebClient 기반
설정 방식 복잡한 RestTemplateBuilder 직관적 Builder 패턴
확장성 제한적 높음 (WebClient의 인프라 재활용)

uri()

쿼리 파라미터를 map을 이용해 붙이려면 UrlBuiler 를 이용한다.

		return restClient.get()
				//uri는 함수형 인터페이스 사용가능. Function<UriBuilder, URI>
				.uri(u -> {
					UriBuilder ub = u.path(url);
					//값이 null인 키를 걸러낸다.
					paramMap.forEach((k, v) -> {
						if(v != null) {
							ub.queryParam(k, v);
						}
					});
					return ub.build();
				})
				.retrieve()
				.body(PowerLinkAd.class);
	}