org.springframework.web.reactive.function.client

## Interface ClientResponse

- All Known Implementing Classes:
    ClientResponseWrapper

      public interface ClientResponse

  Represents an HTTP response, as returned by `WebClient` and also `ExchangeFunction`. Provides access to the response status and headers, and also methods to consume the response body.
  Since:
    5.0
  Author:
    Brian Clozel, Arjen Poutsma

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `ClientResponse.Builder` Defines a builder for a response.
    `static interface` | `ClientResponse.Headers` Represents the headers of the HTTP response.

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `<T> T` | `body(BodyExtractor<T,? super ClientHttpResponse> extractor)` Extract the body with the given `BodyExtractor`.
    `<T> reactor.core.publisher.Flux<T>` | `bodyToFlux(Class<? extends T> elementClass)` Extract the body to a `Flux`.
    `<T> reactor.core.publisher.Flux<T>` | `bodyToFlux(ParameterizedTypeReference<T> elementTypeRef)` Extract the body to a `Flux`.
    `<T> reactor.core.publisher.Mono<T>` | `bodyToMono(Class<? extends T> elementClass)` Extract the body to a `Mono`.
    `<T> reactor.core.publisher.Mono<T>` | `bodyToMono(ParameterizedTypeReference<T> elementTypeRef)` Extract the body to a `Mono`.
    `MultiValueMap<String,ResponseCookie>` | `cookies()` Return the cookies of this response.
    `static ClientResponse.Builder` | `create(HttpStatus statusCode)` Create a response builder with the given status code and using default strategies for reading the body.
    `static ClientResponse.Builder` | `create(HttpStatus statusCode, ExchangeStrategies strategies)` Create a response builder with the given status code and strategies for reading the body.
    `static ClientResponse.Builder` | `create(HttpStatus statusCode, List<HttpMessageReader<?>> messageReaders)` Create a response builder with the given status code and message body readers.
    `static ClientResponse.Builder` | `create(int statusCode, ExchangeStrategies strategies)` Create a response builder with the given raw status code and strategies for reading the body.
    `reactor.core.publisher.Mono<WebClientResponseException>` | `createException()` Create a `WebClientResponseException` that contains the response status, headers, body, and the originating request.
    `static ClientResponse.Builder` | `from(ClientResponse other)` Deprecated. as of 5.3 in favor of the instance based `mutate()`.
    `ClientResponse.Headers` | `headers()` Return the headers of this response.
    `String` | `logPrefix()` Return a log message prefix to use to correlate messages for this exchange.
    `default ClientResponse.Builder` | `mutate()` Return a builder to mutate this response, for example to change the status, headers, cookies, and replace or transform the body.
    `int` | `rawStatusCode()` Return the (potentially non-standard) status code of this response.
    `reactor.core.publisher.Mono<Void>` | `releaseBody()` Release the body of this response.
    `HttpStatus` | `statusCode()` Return the HTTP status code as an `HttpStatus` enum value.
    `ExchangeStrategies` | `strategies()` Return the strategies used to convert the body of this response.
    `reactor.core.publisher.Mono<ResponseEntity<Void>>` | `toBodilessEntity()` Return this response as a delayed `ResponseEntity` containing status and headers, but no body.
    `<T> reactor.core.publisher.Mono<ResponseEntity<T>>` | `toEntity(Class<T> bodyClass)` Return this response as a delayed `ResponseEntity`.
    `<T> reactor.core.publisher.Mono<ResponseEntity<T>>` | `toEntity(ParameterizedTypeReference<T> bodyTypeReference)` Return this response as a delayed `ResponseEntity`.
    `<T> reactor.core.publisher.Mono<ResponseEntity<List<T>>>` | `toEntityList(Class<T> elementClass)` Return this response as a delayed list of `ResponseEntity`s.
    `<T> reactor.core.publisher.Mono<ResponseEntity<List<T>>>` | `toEntityList(ParameterizedTypeReference<T> elementTypeRef)` Return this response as a delayed list of `ResponseEntity`s.

- - ### Method Detail

    - #### statusCode

          HttpStatus statusCode()

      Return the HTTP status code as an `HttpStatus` enum value.
      Returns:
        the HTTP status as an HttpStatus enum value (never `null`)
      Throws:
        `IllegalArgumentException` - in case of an unknown HTTP status code
      Since:
        #getRawStatusCode()
      See Also:
        `HttpStatus.valueOf(int)`

    - #### rawStatusCode

          int rawStatusCode()

      Return the (potentially non-standard) status code of this response.
      Returns:
        the HTTP status as an integer value
      Since:
        5.1
      See Also:
        `statusCode()`, `HttpStatus.resolve(int)`

    - #### headers

          ClientResponse.Headers headers()

      Return the headers of this response.

    - #### cookies

          MultiValueMap<String,ResponseCookie> cookies()

      Return the cookies of this response.

    - #### strategies

          ExchangeStrategies strategies()

      Return the strategies used to convert the body of this response.

    - #### body

          <T> T body(BodyExtractor<T,? super ClientHttpResponse> extractor)

      Extract the body with the given `BodyExtractor`.
      Type Parameters:
        `T` - the type of the body returned
      Parameters:
        `extractor` - the `BodyExtractor` that reads from the response
      Returns:
        the extracted body

    - #### bodyToMono

          <T> reactor.core.publisher.Mono<T> bodyToMono(Class<? extends T> elementClass)

      Extract the body to a `Mono`.
      Type Parameters:
        `T` - the element type
      Parameters:
        `elementClass` - the class of element in the `Mono`
      Returns:
        a mono containing the body of the given type `T`

    - #### bodyToMono

          <T> reactor.core.publisher.Mono<T> bodyToMono(ParameterizedTypeReference<T> elementTypeRef)

      Extract the body to a `Mono`.
      Type Parameters:
        `T` - the element type
      Parameters:
        `elementTypeRef` - the type reference of element in the `Mono`
      Returns:
        a mono containing the body of the given type `T`

    - #### bodyToFlux

          <T> reactor.core.publisher.Flux<T> bodyToFlux(Class<? extends T> elementClass)

      Extract the body to a `Flux`.
      Type Parameters:
        `T` - the element type
      Parameters:
        `elementClass` - the class of elements in the `Flux`
      Returns:
        a flux containing the body of the given type `T`

    - #### bodyToFlux

          <T> reactor.core.publisher.Flux<T> bodyToFlux(ParameterizedTypeReference<T> elementTypeRef)

      Extract the body to a `Flux`.
      Type Parameters:
        `T` - the element type
      Parameters:
        `elementTypeRef` - the type reference of elements in the `Flux`
      Returns:
        a flux containing the body of the given type `T`

    - #### releaseBody

          reactor.core.publisher.Mono<Void> releaseBody()

      Release the body of this response.
      Returns:
        a completion signal
      Since:
        5.2
      See Also:
        `DataBufferUtils.release(DataBuffer)`

    - #### toEntity

          <T> reactor.core.publisher.Mono<ResponseEntity<T>> toEntity(Class<T> bodyClass)

      Return this response as a delayed `ResponseEntity`.
      Type Parameters:
        `T` - response body type
      Parameters:
        `bodyClass` - the expected response body type
      Returns:
        `Mono` with the `ResponseEntity`

    - #### toEntity

          <T> reactor.core.publisher.Mono<ResponseEntity<T>> toEntity(ParameterizedTypeReference<T> bodyTypeReference)

      Return this response as a delayed `ResponseEntity`.
      Type Parameters:
        `T` - response body type
      Parameters:
        `bodyTypeReference` - a type reference describing the expected response body type
      Returns:
        `Mono` with the `ResponseEntity`

    - #### toEntityList

          <T> reactor.core.publisher.Mono<ResponseEntity<List<T>>> toEntityList(Class<T> elementClass)

      Return this response as a delayed list of `ResponseEntity`s.
      Type Parameters:
        `T` - the type of elements in the list
      Parameters:
        `elementClass` - the expected response body list element class
      Returns:
        `Mono` with the list of `ResponseEntity`s

    - #### toEntityList

          <T> reactor.core.publisher.Mono<ResponseEntity<List<T>>> toEntityList(ParameterizedTypeReference<T> elementTypeRef)

      Return this response as a delayed list of `ResponseEntity`s.
      Type Parameters:
        `T` - the type of elements in the list
      Parameters:
        `elementTypeRef` - the expected response body list element reference type
      Returns:
        `Mono` with the list of `ResponseEntity`s

    - #### toBodilessEntity

          reactor.core.publisher.Mono<ResponseEntity<Void>> toBodilessEntity()

      Return this response as a delayed `ResponseEntity` containing status and headers, but no body. Calling this method will release the body of the response.
      Returns:
        `Mono` with the bodiless `ResponseEntity`
      Since:
        5.2

    - #### createException

          reactor.core.publisher.Mono<WebClientResponseException> createException()

      Create a `WebClientResponseException` that contains the response status, headers, body, and the originating request.
      Returns:
        a `Mono` with the created exception
      Since:
        5.2

    - #### logPrefix

          String logPrefix()

      Return a log message prefix to use to correlate messages for this exchange.

      The prefix is based on ClientRequest.logPrefix(), which itself is based on the value of the `LOG_ID_ATTRIBUTE` request attribute, further surrounded with "[" and "]".

      Returns:
        the log message prefix or an empty String if the `LOG_ID_ATTRIBUTE` is not set
      Since:
        5.2.3

    - #### mutate

          default ClientResponse.Builder mutate()

      Return a builder to mutate this response, for example to change the status, headers, cookies, and replace or transform the body.
      Returns:
        a builder to mutate the response with
      Since:
        5.3

    - #### from

          @Deprecated
          static ClientResponse.Builder from(ClientResponse other)

      Deprecated. as of 5.3 in favor of the instance based `mutate()`.
      Create a builder with the status, headers, and cookies of the given response.

      Note: Note that the body in the returned builder is `Flux.empty()` by default. To carry over the one from the original response, use `otherResponse.bodyToFlux(DataBuffer.class)` or simply use the instance based `mutate()` method.

      Parameters:
        `other` - the response to copy the status, headers, and cookies from
      Returns:
        the created builder

    - #### create

          static ClientResponse.Builder create(HttpStatus statusCode)

      Create a response builder with the given status code and using default strategies for reading the body.
      Parameters:
        `statusCode` - the status code
      Returns:
        the created builder

    - #### create

          static ClientResponse.Builder create(HttpStatus statusCode,
                                               ExchangeStrategies strategies)

      Create a response builder with the given status code and strategies for reading the body.
      Parameters:
        `statusCode` - the status code
        `strategies` - the strategies
      Returns:
        the created builder

    - #### create

          static ClientResponse.Builder create(int statusCode,
                                               ExchangeStrategies strategies)

      Create a response builder with the given raw status code and strategies for reading the body.
      Parameters:
        `statusCode` - the status code
        `strategies` - the strategies
      Returns:
        the created builder
      Since:
        5.1.9

    - #### create

          static ClientResponse.Builder create(HttpStatus statusCode,
                                               List<HttpMessageReader<?>> messageReaders)

      Create a response builder with the given status code and message body readers.
      Parameters:
        `statusCode` - the status code
        `messageReaders` - the message readers
      Returns:
        the created builder