Update reference doc after WebClient changes
Issue: SPR-14827
This commit is contained in:
parent
59e4326989
commit
31af6783a5
|
@ -115,10 +115,11 @@ implies a synchronous, non-blocking controller method.
|
||||||
|
|
||||||
Spring Framework 5 adds a new reactive `WebClient` in addition to the existing `RestTemplate`.
|
Spring Framework 5 adds a new reactive `WebClient` in addition to the existing `RestTemplate`.
|
||||||
|
|
||||||
Each supported HTTP client (e.g. Reactor Netty) is adapted to a set of shared,
|
A `WebClient` instance use a `ClientHttpConnector` implementation to drive the underlying
|
||||||
|
supported HTTP client (e.g. Reactor Netty). This client is adapted to a set of shared,
|
||||||
reactive `ClientHttpRequest` and `ClientHttpResponse` abstractions that expose the request
|
reactive `ClientHttpRequest` and `ClientHttpResponse` abstractions that expose the request
|
||||||
and response body as `Flux<DataBuffer>` with full backpressure support on the read and
|
and response body as `Flux<DataBuffer>` with full backpressure support on the read and
|
||||||
the write side. The `Encoder` and `Decoder` abstractions from `spring-core` are also used on
|
the write side. The `HttpMessageReader` and `HttpMessageWriter` abstractions are also used on
|
||||||
the client side for the serialization of a `Flux` of bytes to and from typed objects.
|
the client side for the serialization of a `Flux` of bytes to and from typed objects.
|
||||||
|
|
||||||
An example of using the `WebClient`:
|
An example of using the `WebClient`:
|
||||||
|
@ -126,27 +127,17 @@ An example of using the `WebClient`:
|
||||||
[source,java,indent=0]
|
[source,java,indent=0]
|
||||||
[subs="verbatim,quotes"]
|
[subs="verbatim,quotes"]
|
||||||
----
|
----
|
||||||
ClientHttpConnector httpConnector = new ReactorClientHttpConnector();
|
// create an immutable instance of WebClient
|
||||||
WebClient webClient = new WebClient(httpConnector);
|
WebClient webClient = WebClient.create(new ReactorClientHttpConnector());
|
||||||
|
|
||||||
Mono<Account> response = webClient
|
ClientRequest<Void> request = ClientRequest.GET("http://example.com/accounts/{id}", 1L)
|
||||||
.perform(get("http://example.com/accounts/1").accept(APPLICATION_JSON))
|
.accept(MediaType.APPLICATION_JSON).build();
|
||||||
.extract(body(Account.class));
|
|
||||||
|
Mono<Account> account = this.webClient
|
||||||
|
.exchange(request)
|
||||||
|
.then(response -> response.body(toMono(Account.class)));
|
||||||
----
|
----
|
||||||
|
|
||||||
The above assumes static method imports from `ClientWebRequestBuilders` and `ResponseExtractors`
|
|
||||||
that enable a fluent syntax. The same can also be done with RxJava using static imports from
|
|
||||||
`RxJava1ClientWebRequestBuilder` and `RxJava1ResponseExtractors` instead:
|
|
||||||
|
|
||||||
[source,java,indent=0]
|
|
||||||
[subs="verbatim,quotes"]
|
|
||||||
----
|
|
||||||
Single<Account> response = webClient
|
|
||||||
.perform(get("http://example.com/accounts/1").accept(APPLICATION_JSON))
|
|
||||||
.extract(body(Account.class));
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
[[web-reactive-getting-started]]
|
[[web-reactive-getting-started]]
|
||||||
== Getting Started
|
== Getting Started
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue