Package org.springframework.http.client

# Interface ClientHttpRequestInterceptor

All Known Implementing Classes:
  `BasicAuthenticationInterceptor`

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 ClientHttpRequestInterceptor
Contract to intercept client-side HTTP requests. Implementations can be registered with `RestClient` or `RestTemplate` to modify the outgoing request and/or the incoming response.

Since:
  3.1
Author:
  Arjen Poutsma

## Method Summary

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

## Method Details

### 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.

- either execute the request using `ClientHttpRequestExecution.execute(HttpRequest, byte[])`
- or do not execute the request to block the execution altogether

4. Optionally wrap the response to filter HTTP attributes.

Note: if the interceptor throws an exception after receiving a response, it must close the response via `ClientHttpResponse.close()`.

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