org.springframework.http.client

## Interface ClientHttpRequestInterceptor

-     public interface ClientHttpRequestInterceptor

  Intercepts client-side HTTP requests. Implementations of this interface can be registered with the `RestTemplate`, as to modify the outgoing `ClientHttpRequest` and/or the incoming `ClientHttpResponse`.

  The main entry point for interceptors is `intercept(HttpRequest, byte[], ClientHttpRequestExecution)`.

  Since:
    3.1
  Author:
    Arjen Poutsma

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ClientHttpResponse` | `intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)` Intercept the given request, and return a response.

- - ### Method Detail

    - #### intercept

          ClientHttpResponse intercept(HttpRequest request,
                                     byte[] body,
                                     ClientHttpRequestExecution execution)
                                       throws IOException

      Intercept the given request, and return a response. The given `ClientHttpRequestExecution` allows the interceptor to pass on the request and response to the next entity in the chain.

      A typical implementation of this method would follow the following pattern:

      1. Examine the request and body
      2. Optionally wrap the request to filter HTTP attributes.
      3. Optionally modify the body of the request.
      4. Either
         - execute the request using `ClientHttpRequestExecution.execute(org.springframework.http.HttpRequest, byte[])`,
         or
         - do not execute the request to block the execution altogether.
      5. Optionally wrap the response to filter HTTP attributes.
      Parameters:
        `request` - the request, containing method, URI, and headers
        `body` - the body of the request
        `execution` - the request execution
      Returns:
        the response
      Throws:
        `IOException` - in case of I/O errors