参考目录
隐藏
阅读完需:约 1 分钟
使用Spring Cloud时,通常会用 Feign 来调用远程服务,比如远程服务的权限验证,需要在 header 中传递 token之类的。在方法中显示传递又过于麻烦了,这时候就可以考虑使用 Feign 提供的RequestInterceptor 接口,只要实现了该接口,那么Feign每次做远程调用之前都可以被它拦截下来在进行包装
准备
准备三个工程,分别是 eureka-server、order-server、product-server
测试
为了体现 RequestInterceptor 生效,将返回的消息做了下调整
@GetMapping("/products/{id}")
public String query(@PathVariable Long id, @RequestHeader String token) {
return id + ":Spring Boot... token = " + token;
}
Order Server
在上一章的基础之上做了扩展,创建一个 FeignInterceptor 实现 RequestInterceptor 的接口,这样就可以将需要传递的内容设置到 RequestTemplate 中,然后在服务的另外一端就可以通过 request.getHeader("key") 的方式进行获取了
@Configuration
public class FeignInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
requestTemplate.header("token", "10086");
}
}
流程图:

