为RestTemplate添加header信息

RestTempalte 和 TestRestTemplate 是开发 Spring Boot 应用中常会用的类,它们模拟了一个 Http 的客户端,用来访问或测试 Http 服务。在实践中,我们经常需要在通过 RestTemplate 发出的请求中添加 Header 信息,比如使用 token 来跟踪用户身份的时,就经常将 token 放到请求的 header 中发送给服务端。 本文总结了在 RestTempalte 中添加 Header 信息的方法。

通过 HttpEntity 来添加

在 RestTemplate 的 post* (比如 postForObject) 方法中,可以添加一个 HttpEntity 参数,其中就可以添加 Header 信息, 示例代码如下:

1
2
3
4
5
6
HttpHeaders headers = new HttpHeaders();
headers.set(Constants.HEADER_AUTH_TOKEN_KEY, "token-001");

HttpEntity request = new HttpEntity(headers);

String res = this.restTemplate.postForObject("http://localhost:" + port + "/v1/api/auth/test", request, String.class);

通过构造拦截器(Interceptor)来添加

对于没有提供 HttpEntity 参数的方法,还可以采用在构造拦截器(Interceptor)中添加的方法,代码如下:

1
2
3
4
5
6
restTemplate.getRestTemplate().setInterceptors(
Collections.singletonList((request, body, execution) -> {
request.getHeaders()
.add(Constants.HEADER_AUTH_TOKEN_KEY, token);
return execution.execute(request, body);
}));

本文标题:为RestTemplate添加header信息

文章作者:Morning Star

发布时间:2020年03月04日 - 11:03

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/java/springboot-header-rest-template/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。