Feign请求中报错:Request header is too large

现在我们项目中都已迁入spring boot和spring cloud。 服务间调用现在都改成feign的调用方式,但是上次在实际使用过程中出现过:Request header is too large 的情况。

这里重现下场景:

1,调用其他服务提供方的接口
2,POST请求,传递的参数包含数据较大
3,本地联调发现报错:Request header is too large

查询一圈发现大多是建议修改tomcat中的header的最大值:

例如:在properties文件中添加–server.max-http-header-size=1048576

但是回头想想,这并不是治本的方法,如果下次真的传递的值超过了这个怎么办??

现在给出我的解决方案:在Feign中使用MultiValueMap作为参数的接收方,Controller无需改变。

/**
 * 条件--列表查询
 * @param qo qo
 * @return list
 */
@RequestMapping(value = "/get-appraisals",consumes = MediaType.APPLICATION_JSON_VALUE,
        produces = MediaType.APPLICATION_JSON_VALUE)
JSONObject getAppraisals(@RequestBody MultiValueMap<String,Object> qo);

方法实现:

/**
 * 条件--列表查询
 *
 * @param qo qo
 * @return list
 */
@Override
public JSONObject getAppraisals(MultiValueMap<String, Object> qo) {
    
    return appraisalTaskService.getAppraisals(qo);
}

原因是我们使用Feign调用时,默认会将参数header中也存放一份,所以就导致了header is too large的异常,使用MultiValueMap就可以完美解决这种问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值