Today, just a short code snippet. How to add a header to the ‘RestTemplate’ on Spring.
public class HeaderRequestInterceptor implements ClientHttpRequestInterceptor { private final String headerName; private final String headerValue; public HeaderRequestInterceptor(String headerName, String headerValue) { this.headerName = headerName; this.headerValue = headerValue; } @Override public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException { request.getHeaders().set(headerName, headerValue); return execution.execute(request, body); } }
Now, we add it to our ‘RestTemplate’:
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>(); interceptors.add(new HeaderRequestInterceptor("X-Custom-Header", "<custom_value>")); RestTemplate restTemplate = new RestTemplate(); restTemplate.setInterceptors(interceptors);
And, that’s all.
Just an extra side note. As of Spring Framework 5, a new HTTP client called ‘WebClient’ has been added. It is assumed that ‘RestTemplate’ will be deprecated at some point. If we are starting a new application, specially if you are using the ‘WebFlux’ stack, it will be a better choice to use the new version.