调用feign接口时手动设置请求头信息

调用feign接口手动设置请求头

    • 一 需求场景:
    • 二 解决方法
    • 2.1 feign接口添加@RequestHeader的注解
    • 2.2 provider正常从请求头获取参数
    • 2. 3 consumer手动传参
    • 2.4 测试

一 需求场景:

我们在provider服务有些参数是从请求头中获取的,但是consumer服务在调用feign接口时,本身接口请求头中并没有provider需要的的参数;此时想手动的将一些参数设置到feign接口!

二 解决方法

2.1 feign接口添加@RequestHeader的注解

该方式是在方法执行前,先获取需要的参数,后将取出来的值作为参数传递到待执行的方法中。

该方法所调用的Feign接口需要做一个改造,在参数中添加带有@RequestHeader的注解,该注解表示将变量放在请求头,而不是请求的参数或者请求体里面。

调用feign接口时手动设置请求头信息_第1张图片

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 测试

调用feign接口时手动设置请求头信息_第2张图片
如果我们在@RequestHeader指定了请求头参数名称,那么取的时候也需要使用对应的名称

参考链接
Feign请求头设置/传递问题(同步方法设置Header/异步方法设置Header)

你可能感兴趣的:(#,SpringCloud,python,开发语言,java)