springcloud使用feign调用服务时参数内容过大问题
目录
- feign调用服务时参数内容过大
- 场景
- 解决方法
- feign消费时,如果传入参数过长
- 导致feign.FeignException: status 400 reading错误
- 解决办法
feign调用服务时参数内容过大
场景
前端参数传入到gateway后,gateway使用feign调用服务时,传入的参数内容过大(参数常见于富文本、或者其他附属信息过多)会导致传输不过去,虽然配置可以调节内容大小,但是最大的也有上限,所以特殊处理一道。
例如该类参数:
解决方法
可新增两个redis公共方法,后续出现的都可以共用
1、设置缓存参数:对于请求参数数量不多,但是某些请求参数过大的场景,临时将参数body缓存在redis中,通过传递缓存key(tsparamPlaceContent),在后续接口获取请求体
2、获取缓存参数:对于请求参数过大的请求,通过传递过来的缓存key(tsparamPlaceContent),获取请求体
大致步骤就是这样,具体怎么实现,根据各个项目不同代码去实现,该种解决方案也可适用于MQ在服务之间发送消息时内容过大的问题
feign消费时,如果传入参数过长
导致feign.FeignException: status 400 reading错误
抛出异常:
feign.FeignException: status 400 reading ProjectFeignClient#getPartsByNodes(String,List)
原因:
查询时,list<integer>中有600个参数
解决办法
查询数据时,分批查,每次500左右
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
SpringCloud 如何使用feign时的复杂参数传递
Feign传参注意 最近在用SpringCloud尝试重构以前的项目,使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上的使用还是有一定的限制的,主要是要注意: 1. 当参数比较复杂时,feign即使声明为get请求也会强行使用post请求 2. 不支持@GetMapping类似注解声明请求,需使用 @RequestMapping(value = "url",method = RequestMethod.GET) 3. 使用
-
SpringCloud Feign参数问题及解决方法
这篇文章主要介绍了SpringCloud Feign参数问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天遇到使用Feign调用微服务,传递参数时遇到几个问题 1.无参数 以GET方式请求 服务提供者 @RequestMapping("/hello") public String Hello(){ return "hello,provider"; } 服务消费者 @GetMapping("
-
Spring Cloud-Feign服务调用的问题及处理方法
概述: • Feign 是一个声明式的 REST 客户端,它用了基于接口的注解方式,很方便实现客户端配置. • Feign 最初由 Netflix 公司提供,但不支持SpringMVC注解,后由 SpringCloud 对其封装,支持了SpringMVC注 解,让使用者更易于接受 首先在调用者的pom中加入如下坐标 <!--feign--> <dependency> <groupId>org.springframework.cloud</groupId> &
-
SpringCloud Feign多参数传递及需要注意的问题
目录 Feign多参数传递及注意的问题 在服务提供者cloud-shop-userservice中新增几个方法 修改feign的UserService,新增对应的方法 在feign的controller中调用方法 重启修改过的服务,查看服务注册是否正常 使用工具调用这几个方法进行测试 Feign如何接收多个参数 1.API 2.Feign 3.controller Feign多参数传递及注意的问题 这边沿用前面的Eureka,Feign,Service 在服务提供者cloud-shop-user
-
springcloud使用feign调用服务时参数内容过大问题
目录 feign调用服务时参数内容过大 场景 解决方法 feign消费时,如果传入参数过长 导致feign.FeignException: status 400 reading错误 解决办法 feign调用服务时参数内容过大 场景 前端参数传入到gateway后,gateway使用feign调用服务时,传入的参数内容过大(参数常见于富文本.或者其他附属信息过多)会导致传输不过去,虽然配置可以调节内容大小,但是最大的也有上限,所以特殊处理一道. 例如该类参数: 解决方法 可新增两个redis公共方
-
Feign调用服务时丢失Cookie和Header信息的解决方案
目录 Feign调用服务丢失Cookie和Header信息 服务调用方 服务接受方 Feign调用存在的问题 ①feign远程调用丢失请求头 ②异步调用Feign丢失上下文问题 Feign调用服务丢失Cookie和Header信息 今天在使用Feign调用其他微服务的接口时,发现了一个问题:因为我的项目采用了无状态登录,token信息是存放在cookie中的,所以调用接口时,因为cookie中没有token信息,我的请求被拦截器拦截了. 参考几篇文章,靠谱的解决方法是:将cookie信息放到请
-
Spring-cloud-eureka使用feign调用服务接口
Spring-cloud-eureka使用feign调用服务接口的具体方法,供大家参考,具体内容如下 基于spring-boot 2.0以上版本完成的微服务架构 pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE<
-
使用Feign消费服务时POST/GET请求方式详解
声明:本结论基于Spring Cloud Dalston.RC1.Spring Boot1.5.2.RELEASE. 总体说明 feign消费服务时,以GET方式请求的条件: 如果想让服务消费者采用GET方式调用服务提供者,那么需要: 服务消费者这边feign调用时,在所有参数前加上@RequestParam注解. 服务消费者这边feign调用时,指明为GET方式(注:如果不指明method,那么在条件1满足的情况下,采用的是默认的GET方式). 注:这里条件1和条件2,是"且"的关系
-
关于Feign调用服务Headers传参问题
目录 Feign调用服务Headers传参 我们可以使用RequestInterceptor来实现 Feign设置Header头部,@Headers无效 于是开启feign的日志 于是debug调试 Feign调用服务Headers传参 在使用springcloud中经常会出现个服务调用,一般情况下会在Headers加上token的验证,那么在feign调用时候我们怎么去传这个token过去呢,有人会用@Headers这个注解来实现.但是这样方法太多笨重. 我们可以使用RequestInterc
-
SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值
我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked Server), 调用存储过程过程时,参数不能为NULL值. 否则就会报下面错误提示: 对应的英文错误提示为: EXEC xxx.xxx.dbo.Usp_Test NULL,NULL,'ALL' Msg 7213, Level 16, State 1, Line 1 The attempt by th
-
SpringCloud Nacos + Ribbon 调用服务的实现方式(两种)
目录 1.代码方式调用 1.1创建服务提供者:Provider 1.2创建服务调用者:Consumer 2.注解方式调用 注解实现原理分析 总结 在 Nacos 中,服务调用主要是通过 RestTemplate + Ribbon 实现的,RestTemplate 是 Spring 提供的 Restful 请求实现类,而 Ribbon 是客户端负载均衡器,通过 Ribbon 可以获取服务实例的具体信息(IP 和端口号),之后再通过 RestTemplate 加服务实例的具体信息就可以完成一次服务调
-
springcloud feign调其他微服务时参数是对象的问题
目录 @RequestBody GET请求多参数的URL 正确写法如下 POST请求包含多个参数 在使用feign调用其它服务时,发现获取的参数是null,当参数是对象是,是执行的Post请求,所以要在方法参数前加@RequestBody, @RequestBody 处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据. GET请求中,因为没有HttpEntity,所以@RequestB
-
SpringCloud使用Feign实现服务调用
Spring Cloud Feign简介 Spring Cloud Feign也是一个基础工具类,它整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能以外,它还提供了一种声明式的Web服务客户端定义方式.使用它可以进行服务的消费,但是它的客户端负载平衡仍是通过Ribbon实现的 使用Spring Cloud Feign 创建一个SpringBoot工程,作为服务调用方 1.pom.xml <dependency> <group
-
详解springcloud 基于feign的服务接口的统一hystrix降级处理
springcloud开发微服务时,基于feign来做声明式服务接口,当启用hystrix服务熔断降级时,项目服务众多,每个Feign服务接口都得写一些重复问的服务降级处理代码,势必显得枯燥无味: Feign服务接口: @FeignClient(name="springcloud-nacos-producer", qualifier="productApiService", contextId="productApiService", fallb
随机推荐
- 在ASP.NET里得到网站的域名
- javascript 24点游戏代码
- 代码中到底应不应当写注释?
- zTree树形插件异步加载方法详解
- 来自chinaz的ajax获取评论代码
- ASP替换、保存远程图片实现代码
- 在vue-cli脚手架中配置一个vue-router前端路由
- Android仿微信5实现滑动导航条
- 对squid中refresh_pattern的一些理解和建议
- 使用grappelli为django admin后台添加模板
- 在C#中 webbrowser的使用心得
- jquery text,radio,checkbox,select操作实现代码
- 通过jQuery源码学习javascript(二)
- android onTouchEvent处理机制总结(必看)
- php模拟服务器实现autoindex效果的方法
- 使用C#实现在屏幕上画图效果的代码实例
- Linux 内核空间与用户空间实现与分析
- 使用jquery的cookie实现登录页记住用户名和密码的方法
- 使用pycharm设置控制台不换行的操作方法
- Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例