Feign远程调用参数里的内容丢失如何解决
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章主要讲解了"Feign远程调用参数里的内容丢失如何解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Feign远程调用参数里的内容丢失如何解决
千家信息网最后更新 2024年11月11日Feign远程调用参数里的内容丢失如何解决
这篇文章主要讲解了"Feign远程调用参数里的内容丢失如何解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Feign远程调用参数里的内容丢失如何解决"吧!
Feign远程调用参数里面内容丢失
举个例子
服务A提供了如下接口(注意这里的参数url是一个地址):
@GetMapping("/getSample")public String getSample(@RequestParam String url){ //此处省略逻辑......}
服务B需要调用服务A的接口,调用如下:
sampleFeignClient.getSample("http://www.xxx.com?name=dumas&age=18");
提出问题:此时调用服务A接口后,在A服务接收的方法体内,断点会发现后面的参数age=18会丢失。
问题的原因:Feign远程调用是使用HTTP协议的,可能是获取参数的时候,把参数url里面的内容当成了参数,所以直接舍弃了。
解决方法
服务B调用前,使用URLEncoder.encode(url,"UTF-8");
服务A获取参数后,使用URLDecoder.decode(url, "UTF-8");
Feign远程调用细节--丢失数据
同步调用
我这里只添加了header中的Cookie,当然也可以遍历header,把所有的都添加到新的请求,解决办法跟Gateway丢失请求头类似。
@Configurationpublic class FeignConfiguration { //feign远程调用丢失请求头问题 @Bean("requestInterceptor") public RequestInterceptor requestInterceptor(){ return template -> { ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); String cookie = request.getHeader("Cookie"); template.header("Cookie",cookie); }; }}
异步调用
当我们使用异步调用openfeign,上述代码就会报空指针,获取不到当前的请求。
我们先获取到当前请求,再分享给子线程。
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();CompletableFuturefuture = CompletableFuture.runAsync(() -> { RequestContextHolder.setRequestAttributes(attributes); feign.doService();}, executor);
感谢各位的阅读,以上就是"Feign远程调用参数里的内容丢失如何解决"的内容了,经过本文的学习后,相信大家对Feign远程调用参数里的内容丢失如何解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
参数
内容
服务
问题
接口
学习
方法
UTF-8
代码
例子
办法
原因
地址
就是
思路
情况
指针
数据
文章
断点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
智能软件开发诚信为本
路客互联网科技有限公司 d座
软件开发公司红包
有品服务器
南京运营软件开发概况
蓝队云服务器管理页面
网络安全的基本因素包括什么
仙剑一是用什么软件开发的
外国人唱歌软件开发
虎丘区知名服务器代理厂家
数据库专业书
重庆市公安局网络安全队罗铂铀
天津市红桥区网络安全中心
软件开发分类 自主优化
服务器防止攻击的思路
银行软件开发电话面试经验
水泥服务器
数据库运用技术范畴
贵港网络安全事件
数据库设计需求分析的范文
谢永江网络安全法课件
网络安全法规定网路运营者
华为网络技术大赛中级训练题
服务器odm工厂华龙
终端网络安全产品
网络运维和网络安全课程
服务器转换器
代谢物数据库构建
58红包软件开发裙
上海日尤克网络技术有限公司