스프링 부트 - 외부 API 호출하기, WebClient 사용하기
지금까지 스프링 부트 공부를 하면서 API를 만들어보고 브라우저, 프로그램 등에서 호출은 해봤지만, 스프링부트 애플리케이션에서 외부 API를 호출하는 법은 따로 공부해본적이 없다.
스프링에서 외부 API 호출에 대한 구글링을 해보니 대부분 restTemplate이란 클래스를 사용했다. 하지만 공식 문서에서 보면 이 클래스는 유지 정도의 지원만하기 때문에, WebClient를 사용하기를 권장한다.
WebClient를 사용하기 위해 먼저 build.gradle에 라이브러리를 추가한다.
그리고 static 메소드를 사용해 생성한다. 그 이후 방법은 링크에 잘 나와있다.
howtodoinjava.com/spring-webflux/webclient-get-post-example/
Spring WebClient - GET, PUT, POST, DELETE examples
Learn to use Spring WebClient which is non-blocking, reactive web client to perform HTTP requests. It has been added in Spring 5 (spring-webflux module).
howtodoinjava.com
나는 여러 json이 담긴 리스트를 요청해서 받으려고 한다.
그렇다면 다음 코드 처럼 Flux데이터로 받아와 stream으로 바꾸고, collect 함수로 List 형태로 바꿔준다.
List<PersonDto> req = webClient.get()
.retrieve()
.bodyToFlux(PersonDto.class)
.toStream()
.collect(Collectors.toList());
또 여기서 안것인데, 게터, 세터 없으면 ObjectMapper 가 json이랑 클래스랑 못이어준다.
추후 WebFlux에 대해 공부해야겠다.