调用feign接口手动设置请求头
- 一 需求场景:
 - 二 解决方法
 - 2.1 feign接口添加@RequestHeader的注解
 - 2.2 provider正常从请求头获取参数
 - 2. 3 consumer手动传参
 - 2.4 测试
 
一 需求场景:
我们在provider服务有些参数是从请求头中获取的,但是consumer服务在调用feign接口时,本身接口请求头中并没有provider需要的的参数;此时想手动的将一些参数设置到feign接口!
二 解决方法
2.1 feign接口添加@RequestHeader的注解
该方式是在方法执行前,先获取需要的参数,后将取出来的值作为参数传递到待执行的方法中。
该方法所调用的Feign接口需要做一个改造,在参数中添加带有@RequestHeader的注解,该注解表示将变量放在请求头,而不是请求的参数或者请求体里面。

2.2 provider正常从请求头获取参数
    @GetMapping("getName")
    public Void getMerchantCompareInfo(@RequestParam(value = "name") String name,HttpServletRequest request) {
        String token = request.getHeader("token");
        String token2 = request.getHeader("X-TOKEN");
        System.out.println("token = " + token);
        System.out.println("X-TOKEN = " + token2);
        return null;
    }
 
2. 3 consumer手动传参
    @GetMapping("getName")
    public Void getMerchantCompareInfo() {
        feignParamApi.getMerchantCompareInfo("name","12344");
        return null;
    }
 
2.4 测试

 如果我们在@RequestHeader指定了请求头参数名称,那么取的时候也需要使用对应的名称
参考链接
 Feign请求头设置/传递问题(同步方法设置Header/异步方法设置Header)



















