实现
第一步
写一个配置类,实现RequestInterceptor这个接口,简单做一些处理
@Configuration
public class FeignConfig implements RequestInterceptor {
/**
* Called for every request. Add data using methods on the supplied {@link RequestTemplate}.
*
* @param template
*/
@Override
public void apply(RequestTemplate template) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
// 获取请求体
javax.servlet.http.HttpServletRequest request = attributes.getRequest();
// 获取token
String token = request.getHeader("token");
// 注入feign的请求头
template.header("token",token);
}
}
第二步
远程调用接口定义
需要指明配置类在@FeignClient
中添加 configuration = FeignConfig.class
属性即可
@Component
@FeignClient(value = "user-service",configuration = FeignConfig.class)
public interface UserClient {
@GetMapping("/admin/users/info/{userId}")
public UserVo info(@PathVariable String userId);
}