IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> feign发起请求时如何设置Header参数 -> 正文阅读

[网络协议]feign发起请求时如何设置Header参数

以前一直用feign发起请求,但是不知道怎么在header加参数,今天试了一下自定义header参数。
controller层代码

@RestController
@Slf4j
@RequestMapping("/test")
public class TestController {
    @GetMapping("")
    public R<?> testController(HttpServletRequest httpServletRequest){
        String param = httpServletRequest.getHeader("param");
        System.out.println(param);
        return R.success(param);
    }
}

调用方代码:

	@RequestLine("GET /test")
    @Headers({"param:really"})
    JSONObject test();

调用结果:

@Resource
    private TestClient testClient;
    @Test
    public void test(){
        JSONObject res = testClient.test();
        System.out.println(res);
        System.out.println("done");
    }

结果如下:

{"msg":"操作成功","code":1,"data":"really","success":true}
done

说明取出了放入的参数,常用于指定post请求的body类型:

@Headers({"Content-Type: application/json", "Accept: application/json"})

当然也可以自定义参数:

@RequestLine("GET /test")
    @Headers({"param:{pp}"})
    JSONObject test(@Param("pp")String pp);

但是上边的方法需要每个请求接口上都写一遍,对于通用的header参数设置还有另外一种方法,借助于拦截器:

@Component
public class FeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
        requestTemplate.header("param","another");
    }
}

由于我重写了feignBuilder,所以要在builder时加上拦截器配置,

@Bean(name = "custom")
    public Feign.Builder getFeignBuilder() {
        return Feign.builder()
                .logLevel(Level.NONE)
                .encoder(new JacksonEncoder())
                .decoder(new JacksonDecoder())
                .logger(new ErrorLogger())
                .errorDecoder(errorDecoder())
                .options(getOptions())
                .requestInterceptor(new FeignInterceptor())
                .client(apacheHttpClient());
    }

这样就可以了,第一种方法里的test方法运行结果如下

{"msg":"操作成功","code":1,"data":"another","success":true}

此种方法可以统一加入header参数,但是无法给特定的请求加(加的话只能去根据url进行匹配),同时没找到拦截器传入自定义的header参数的方法。

参考博客
参考1
参考2

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 12:07:35  更:2022-02-26 12:11:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 13:18:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码