Spring WebClient
2024. 3. 10. 14:33ㆍSpring Boot
Spring Boot에서 API를 호출하기 위한 Http Client에는
대표적으로 Non-Blocking의 WebClient
Blocking의 RestTemplate가 있다.
그런데 이제 RestTemplate는 Deprecated 됬기 때문에
특별한 사정이 없으면 WebClient를 쓰면 된다.
Spring WebClient를 사용하기 위해서는 우선

implementation 'org.springframework.boot:spring-boot-starter-webflux'
를 통하여 필요한 라이브러리를 설정 해야한다.
import javax.net.ssl.SSLException;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import reactor.netty.http.client.HttpClient;
@Configuration
public class client_config {
@Bean
public WebClient client() throws SSLException
{
SslContext sslContext;
sslContext = SslContextBuilder
.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build();
HttpClient httpClient = HttpClient
.create()
.secure(t ->
t.sslContext(sslContext));
WebClient client = WebClient
.builder()
.baseUrl("https://localhost:5000/webclient")
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
return client;
}
}
우선 사용할 WebClient를 Bean으로 등록시켰다.
또한 기본적으로 Https를 이용하기 때문에 SSL을 위한 clientConnector도 설정을 따로 해주었다.
@Autowired
WebClient client;
@GetMapping("/client/get/{param}")
public Mono<String> test_get(@PathVariable String param) throws SSLException {
return client
.get()
.uri("/get" + param)
.retrieve()
.bodyToMono(String.class);
}
이런 식으로 사용하는데 이 경우 uri는 기본으로 설정한 baseUrl에 새로 넣은 uri가 합쳐져
https://localhost:5000/webclient/get + param으로 요청을 보내게 된다
'Spring Boot' 카테고리의 다른 글
| R2DBC (0) | 2024.06.17 |
|---|---|
| Spring WebFlux (0) | 2024.03.18 |
| Asynchronized (0) | 2024.03.02 |
| Spring Boot Studying (0) | 2024.02.28 |
| Authorization by Spring Security (0) | 2024.02.28 |