Если у меня есть несколько статических заголовков, которые следует применять к любому запросу, отправляемому с RestTemplate
: как их добавить?
В этом примере я всегда хотел бы отправить заголовок http accept=applicaton/json
. (это может быть любой другой заголовок, также несколько заголовков).
1) HttpEntity
непосредственно перед отправкой:
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
ResponseEntity<Rsp> http = restTemplate.postForEntity(host, new HttpEntity<>(req, headers), type);
2) ClientHttpRequestInterceptor
:
class MyInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
request.getHeaders().set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
return execution.execute(request, body);
}
}
@Bean
public RestTemplateCustomizer customizer() {
return restTemplate -> restTemplate.getInterceptors().add(new MyInterceptor());
}
А потом просто напишите:
restTemplate.postForEntity(host, req, type);
Какой из них имеет преимущество перед другим, и поэтому должен быть предпочтительным?