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
  • Method Details

    • 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:
    • 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:
    • headers

      Return the headers of this response.
    • 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:
    • 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 ResponseEntitys.
      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 ResponseEntitys
    • toEntityList

      <T> reactor.core.publisher.Mono<ResponseEntity<List<T>>> toEntityList(ParameterizedTypeReference<T> elementTypeRef)
      Return this response as a delayed list of ResponseEntitys.
      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 ResponseEntitys
    • 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
    • createError

      <T> reactor.core.publisher.Mono<T> createError()
      Create a Mono that terminates with a WebClientResponseException, containing the response status, headers, body, and the originating request.
      Type Parameters:
      T - the reified type
      Returns:
      a Mono that fails with a WebClientResponseException.
      Since:
      6.0
      See Also:
    • 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.
      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