如何在Spring Boot中使用RestTemplate发送请求时设置访问令牌(token)?
时间: 2024-12-22 15:26:18 浏览: 66
在Spring Boot中,你可以通过RestTemplate来发送HTTP请求。若需要在发送请求时设置访问令牌(token),通常会在`RestTemplate`创建时或者每次发送请求前,将token添加到headers或http request body中。这里有两个常见的做法:
1. **配置全局Header**:
- 首先,你需要在Spring的配置文件`application.properties`或`application.yml`中注入`HttpHeaders`:
```yaml
spring.http.headers.user-agent: 'your-app-name/1.0'
```
- 然后,在`RestTemplate`初始化时,可以创建一个带有Token的自定义header的实例:
```java
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + yourAccessToken);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.setDefaultUriTemplateHandler(new UriComponentsContributor() {
@Override
public void contribute(UriComponents uriComponents, HttpUriRequest request) {
uriComponents.queryParams().put("access_token", yourAccessToken);
}
});
```
2. **使用Interceptors(拦截器)**:
- 可以创建一个`Interceptor`来动态地设置Token:
```java
@Component
public class TokenInterceptor implements HandlerInterceptorAdapter {
private String accessToken;
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
request.getHeaders().set("Authorization", "Bearer " + accessToken);
return true;
}
}
```
- 将这个拦截器注册到`WebMvcConfigurer`:
```java
@Bean
public WebMvcConfigurer webConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TokenInterceptor())
.addPathPatterns("/**");
}
};
}
```
记得将`yourAccessToken`替换为你实际的访问令牌值。
阅读全文
相关推荐



















