在我们写SpringMVC项目是一些细节导致出现这个问题;
SpringMVC中接口为了少按几下键盘会写成这样
//Post @RequestParam 带参
@PostMapping("/t5")
public R t5(@RequestParam String param) {
log.info("t5===>"+"开始");
log.info("t5入参===>"+param);
log.info("t5===>"+"结束");
return R.ok();
}
多敲几下键盘就是这样
//Post @RequestParam 带参
@PostMapping("/t5")
public R t5(@RequestParam("name") String param) {
log.info("t5===>"+"开始");
log.info("t5入参===>"+param);
log.info("t5===>"+"结束");
return R.ok();
}
那么导致我们在写微服务使用feign远程调用时会出现RequestParam.value() was empty on parameter 0
报错!
问题再feign远程接口处报错写法如下
@PostMapping("/testb/t5")
R t5(@RequestParam String param);
或者
@PostMapping("/testb/t5")
R t5(String param);
更改为如下即可
@PostMapping("/testb/t5")
R t5(@RequestParam("name") String param);
至于被调用方加不加(“name”)问题不大,产生这个问题的原因和Feign 的实现有关。Feign 的底层使用的是 httpclient,在低版本中会产生这个问题,听说高版本中已经对这个问题修复了。