org.springframework.web.reactive.function.client

## Interface ExchangeFunction

- Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

      @FunctionalInterface
      public interface ExchangeFunction

  Represents a function that exchanges a request for a (delayed) ClientResponse. Can be used as an alternative to `WebClient`.

  For example:

       ExchangeFunction exchangeFunction =
               ExchangeFunctions.create(new ReactorClientHttpConnector());

       URI url = URI.create("https://example.com/resource");
       ClientRequest request = ClientRequest.create(HttpMethod.GET, url).build();

       Mono<String> bodyMono = exchangeFunction
           .exchange(request)
           .flatMap(response -> response.bodyToMono(String.class));

  Since:
    5.0
  Author:
    Arjen Poutsma

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `reactor.core.publisher.Mono<ClientResponse>` | `exchange(ClientRequest request)` Exchange the given request for a `ClientResponse` promise.
    `default ExchangeFunction` | `filter(ExchangeFilterFunction filter)` Filter the exchange function with the given `ExchangeFilterFunction`, resulting in a filtered `ExchangeFunction`.

- - ### Method Detail

    - #### exchange

          reactor.core.publisher.Mono<ClientResponse> exchange(ClientRequest request)

      Exchange the given request for a `ClientResponse` promise.

      Note: When calling this method from an `ExchangeFilterFunction` that handles the response in some way, extra care must be taken to always consume its content or otherwise propagate it downstream for further handling, for example by the `WebClient`. Please see the reference documentation for more details on this.

      Parameters:
        `request` - the request to exchange
      Returns:
        the delayed response

    - #### filter

          default ExchangeFunction filter(ExchangeFilterFunction filter)

      Filter the exchange function with the given `ExchangeFilterFunction`, resulting in a filtered `ExchangeFunction`.
      Parameters:
        `filter` - the filter to apply to this exchange
      Returns:
        the filtered exchange
      See Also:
        `ExchangeFilterFunction.apply(ExchangeFunction)`