Spring Cloud 使用Feign调用微服务出现:QueryMap key must be a String:Long异常

209 阅读1分钟

错误代码写法,如下:

/**
 * @Auther: csp1999
 * @Date: 2021/01/18/15:57
 * @Description: 商品微服务SkuController的Feign接口
 */
@FeignClient(name = "goods")// 调用goods商品微服务
@RequestMapping("/sku")
//@Component
public interface SkuFeign {
	
	...

    /**
     * 商品库存递减
     *
     * @param decrmap key:要递减的商品id
     *                value:要低价的商品数量
     * @return
     */
    @GetMapping(value = "/decr/count")
    Result decrCount(@RequestParam Map<Long, Integer> decrmap);
}

解决方法:只需要将Map的key的类型改成String即可

@GetMapping(value = "/decr/count")
Result decrCount(@RequestParam Map<String, Integer> decrmap);

错误原因:Spring Cloud 借助Feign 调用微服务是基于Http请求的,所有传输参数key都是String字符串类型!