【踩坑日记】feign调用时报错:java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

项目场景:

SpringCloud微服务,使用feign进行服务间的调用


问题描述

服务启动后出现异常:

nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

原因分析:

IllegalStateException: RequestParam.value() was empty on parameter 0

非法状态异常。大概意思是:第 0 个参数绑定的 value 值为空。也就是说第 0 个参数没有正确的绑定请求的参数映射。

这个错误产生的原因是我们使用了 Feign,在配置了 @FeignClient 注解的接口上声明的方法中的参数使用了 @RequestParam 注解,但是 @RequestParam 注解并没有指定 value 属性。

例如:

  @PostMapping("/list")
  public List<LabelDTO> list(
      @RequestParam Integer type,
      @RequestParam(value = "startTime") String startTime,
      @RequestParam(value = "endTime") String endTime) {
    return labelService.list(type, startTime, endTime);

上面因为参数type的@RequestParam未配置(value="type"),导致了项目启动异常


解决方案:

参数type的添加value配置,@RequestParam(value="type")

总结:

 Springboot 中可以不指定 value 使用 @RequestParam 注解,但是 Spring cloud 中的 Feign 却是不行

因为Feign 的底层使用的是 httpclient进行通讯,在低版本中会产生这个问题,高版本中已经对这个问题修复了,不过本人还没试过。后面验证

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值