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左右

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 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

随机推荐