![webclient](https://img-blog.csdnimg.cn/img_convert/35bbef25973eafa7b343c6108a7754d1.png)
webclient
WebClient引用其Java文档是Spring Framework的非阻塞的React式客户端执行HTTP请求,通过底层HTTP客户端库(如Reactor Netty)公开流利的React式API 。
在我当前的项目中,我广泛使用WebClient进行服务到服务的调用,并发现它是一个了不起的API,并且我喜欢使用流畅的界面。
考虑一个返回“城市”列表的远程服务。 使用WebClient的代码如下所示:
...
import org.springframework.http.MediaType
import org.springframework.web.reactive.function.client.WebClient
import org.springframework.web.reactive.function.client.bodyToFlux
import org.springframework.web.util.UriComponentsBuilder
import reactor.core.publisher.Flux
import java.net.URI
CitiesClient( class CitiesClient(
private val webClientBuilder: WebClient.Builder,
private val citiesBaseUrl: String
) {
fun getCities(): Flux<City> {
val buildUri: URI = UriComponentsBuilder
.fromUriString(citiesBaseUrl)
.path( "/cities" )
.build()
.encode()
.toUri()
val webClient: WebClient = this .webClientBuilder.build()
return webClient.get()
.uri(buildUri)
.accept(MediaType.APPLICATION_JSON)
.exchange()
.flatMapMany { clientResponse -&g