Interface RestClient.RequestHeadersSpec<S extends RestClient.RequestHeadersSpec<S>>

Type Parameters:
S - a self reference to the spec type
All Known Subinterfaces:
RestClient.RequestBodySpec, RestClient.RequestBodyUriSpec, RestClient.RequestHeadersUriSpec<S>
Enclosing interface:
RestClient

public static interface RestClient.RequestHeadersSpec<S extends RestClient.RequestHeadersSpec<S>>
Contract for specifying request headers leading up to the exchange.
  • Method Details

    • accept

      S accept(MediaType... acceptableMediaTypes)
      Set the list of acceptable media types, as specified by the Accept header.
      Parameters:
      acceptableMediaTypes - the acceptable media types
      Returns:
      this builder
    • acceptCharset

      S acceptCharset(Charset... acceptableCharsets)
      Set the list of acceptable charsets, as specified by the Accept-Charset header.
      Parameters:
      acceptableCharsets - the acceptable charsets
      Returns:
      this builder
    • ifModifiedSince

      S ifModifiedSince(ZonedDateTime ifModifiedSince)
      Set the value of the If-Modified-Since header.

      The date should be specified as the number of milliseconds since January 1, 1970 GMT.

      Parameters:
      ifModifiedSince - the new value of the header
      Returns:
      this builder
    • ifNoneMatch

      S ifNoneMatch(String... ifNoneMatches)
      Set the values of the If-None-Match header.
      Parameters:
      ifNoneMatches - the new value of the header
      Returns:
      this builder
    • header

      S header(String headerName, String... headerValues)
      Add the given, single header value under the given name.
      Parameters:
      headerName - the header name
      headerValues - the header value(s)
      Returns:
      this builder
    • headers

      S headers(Consumer<HttpHeaders> headersConsumer)
      Provides access to every header declared so far with the possibility to add, replace, or remove values.
      Parameters:
      headersConsumer - the consumer to provide access to
      Returns:
      this builder
    • httpRequest

      S httpRequest(Consumer<ClientHttpRequest> requestConsumer)
      Callback for access to the ClientHttpRequest that in turn provides access to the native request of the underlying HTTP library.

      This could be useful for setting advanced, per-request options that are exposed by the underlying library.

      Parameters:
      requestConsumer - a consumer to access the ClientHttpRequest with
      Returns:
      this builder
    • retrieve

      Proceed to declare how to extract the response. For example to extract a ResponseEntity with status, headers, and body:
       ResponseEntity<Person> entity = client.get()
           .uri("/persons/1")
           .accept(MediaType.APPLICATION_JSON)
           .retrieve()
           .toEntity(Person.class);
       

      Or if interested only in the body:

       Person person = client.get()
           .uri("/persons/1")
           .accept(MediaType.APPLICATION_JSON)
           .retrieve()
           .body(Person.class);
       

      By default, 4xx response code result in a HttpClientErrorException and 5xx response codes in a HttpServerErrorException. To customize error handling, use onStatus handlers.

      Returns:
      ResponseSpec to specify how to decode the body
    • exchange

      default <T> T exchange(RestClient.RequestHeadersSpec.ExchangeFunction<T> exchangeFunction)
      Exchange the ClientHttpResponse for a type T. This can be useful for advanced scenarios, for example to decode the response differently depending on the response status:
       Person person = client.get()
           .uri("/people/1")
           .accept(MediaType.APPLICATION_JSON)
           .exchange((request, response) -> {
               if (response.getStatusCode().equals(HttpStatus.OK)) {
                   return deserialize(response.getBody());
               }
               else {
                   throw new BusinessException();
               }
           });
       

      Note: The response is closed after the exchange function has been invoked.

      Type Parameters:
      T - the type the response will be transformed to
      Parameters:
      exchangeFunction - the function to handle the response with
      Returns:
      the value returned from the exchange function
    • exchange

      <T> T exchange(RestClient.RequestHeadersSpec.ExchangeFunction<T> exchangeFunction, boolean close)
      Exchange the ClientHttpResponse for a type T. This can be useful for advanced scenarios, for example to decode the response differently depending on the response status:
       Person person = client.get()
           .uri("/people/1")
           .accept(MediaType.APPLICATION_JSON)
           .exchange((request, response) -> {
               if (response.getStatusCode().equals(HttpStatus.OK)) {
                   return deserialize(response.getBody());
               }
               else {
                   throw new BusinessException();
               }
           });
       

      Note: If close is true, then the response is closed after the exchange function has been invoked. When set to false, the caller is responsible for closing the response.

      Type Parameters:
      T - the type the response will be transformed to
      Parameters:
      exchangeFunction - the function to handle the response with
      close - true to close the response after exchangeFunction is invoked, false to keep it open
      Returns:
      the value returned from the exchange function