参考目录
隐藏
阅读完需:约 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");
}
}