feign远程调用RequestParam.value() was empty on parameter 0

在我们写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,在低版本中会产生这个问题,听说高版本中已经对这个问题修复了。

经验分享 程序员 微信小程序 职场和发展