项目场景:
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 却是不行文章来源:https://www.toymoban.com/news/detail-755630.html
因为Feign 的底层使用的是 httpclient进行通讯,在低版本中会产生这个问题,高版本中已经对这个问题修复了,不过本人还没试过。后面验证文章来源地址https://www.toymoban.com/news/detail-755630.html
到了这里,关于【踩坑日记】feign调用时报错:java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!