Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType at feign.Contract$BaseContract.checkMapString(Contract.java:137)

来自ling
跳转至: 导航搜索

@RequestParam Map params-->@RequestParam Map<String, Object> params


@RequestMapping(value = "/salers/{orgId}/roles", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
ResponseResult<Object> querySalerRoleList(@RequestParam Map<String, Object> condition, @PathVariable("orgId") Long orgId);

上面是一段定义在Feign中的接口声明,请求方式为GET,问题如下:

  • GET请求参数不支持对象,只允许传递基本参数,如字符串、数字,可以传递Map类型,如果执意要把参数定义为对象,Feign会自动把请求方式从GET切换成POST;另外map中的value也应该是一般类型,数字、字符串等,复杂对象依旧会报错
  • 参数必须指定属性名称,如上例中的orgId,如果不编写("orgId")启动报错