很多人都遇到过feign请求后请求头丢失的问题,这里可以通过feign的拦截器处理该问题并且扩展了一下怎么设置feign真正的请求地址
// controller层
@RestController
@RequestMapping("/testShow")
public class TestController {
@Autowired
private TestFeign testFeign;
// 通过feign想要调用的地址
@GetMapping(value = "/show")
public String show(HttpServletRequest request){
return request.getHeader("uid");
}
// 客户端请求的地址
@GetMapping("/testFeign")
public String testFeign(){
return testFeign.testShow();
}
}
// feign的接口
@FeignClient(value = "serviceName",url = "1.1.1.1",configuration = FeignInterceptor.class)
public interface TestFeign {
@GetMapping("/testShow/show")
String testShow();
}
// feign拦截器
public class FeignInterceptor implements RequestInterceptor{
@Override
public void apply(RequestTemplate requestTemplate) {
// 设置请求头
requestTemplat.header("uid","6666");
// 设置想要请求的地址 之前feign的接口上面的url是1.1.1.1
requestTemplate.target("http://127.0.0.1:8888");
}
}
接口调用:http://localhost:8888/testShow/testFeign
结果:6666