feign token传递
时间: 2024-07-19 14:00:32 浏览: 83
Feign 是一个声明式HTTP客户端,它是 Netflix OSS 组织的一部分,用于简化微服务之间的API调用。在Feign中,Token(通常用于身份验证)的传递可以通过配置或者在请求头中设置来完成。
1. **配置传递**:在Feign客户端的接口定义中,你可以使用`@RequestLine`注解来指定HTTP请求,并在其中添加`Authorization` header来携带Token。例如:
```java
@FeignClient(name = "api-service")
public interface ApiService {
@RequestLine("GET /users")
@Headers({"Authorization: Bearer {token}"})
User getUser(@Param("token") String token);
}
```
2. **Header注入**:如果Token是依赖于请求的,可以在创建Feign实例时传递给`RequestInterceptor`,该拦截器会在每个请求发送前被调用,设置header。
```java
Feign.builder()
.encoder(new StringEncoder())
.client(new OkHttpClient())
.interceptors(new RequestInterceptor() {
@Override
public void apply(Exchange exchange) {
exchange.getRequest().headers().set("Authorization", "Bearer " + getToken());
}
})
.target(ApiService.class, "http://api.example.com");
```
3. **使用Feign.Builder**:如果你在编写客户端工厂代码,可以更灵活地处理Token的获取和传递:
```java
Feign.Builder builder = Feign.builder();
// 获取Token逻辑
String token = getToken();
builder.header("Authorization", "Bearer " + token);
ApiService apiService = builder.target(ApiService.class, "http://api.example.com");
```
阅读全文