【踩坑日记】feign调用时报错:java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0
•
Jave
项目场景:
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 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进行通讯,在低版本中会产生这个问题,高版本中已经对这个问题修复了,不过本人还没试过。后面验证
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/ba07b13978.html
