错误方式:
使用@RequestParam(“userRoleList”)注解,传参类型:List<SysUserRole>,SysUserRole是自定义的类
报错信息大致是,String不能转换成List
/**
* 参与方Controller中:更新角色缓存
*/
@PostMapping(value = "/cacheSysUserRole")
public Result<?> cacheSysUserRole(@RequestParam("userRoleList") List<SysUserRole> userRoleList) {
cacheService.cacheSysUserRole(userRoleList);
return success();
}
/**
* 调用方Feign接口中:更新角色缓存
*
* @param userRoleList List<SysUserRole>
* @return Result<?>
*/
@PostMapping(value = "/gateway/gateway-cache/cacheSysUserRole")
Result<?> cacheSysUserRole(@RequestParam("userRoleList") List<SysUserRole> userRoleList);
正确方式:
使用@RequestBody注解,传参类型(没变):List<SysUserRole>
/**
* 参与方Controller中:更新角色缓存
*/
@PostMapping(value = "/cacheSysUserRole")
public Result<?> cacheSysUserRole(@RequestBody List<SysUserRole> userRoleList) {
cacheService.cacheSysUserRole(userRoleList);
return success();
}
/**
* 发起方Feign接口中:更新角色缓存
*
* @param userRoleList List<SysUserRole>
* @return Result<?>
*/
@PostMapping(value = "/gateway/gateway-cache/cacheSysUserRole")
Result<?> cacheSysUserRole(@RequestBody List<SysUserRole> userRoleList);
分析:
- 如果传的参数是String类型可以用@RequestParam(“aaa”)
- 传自定义的类的实例,用@RequestBody
- 以上讨论都是使用@PostMapping
- 这应该不是最好的解决办法,待发掘(或许配置JSON转换器可以解决?)