赞
踩
后端调用feign接口请求, 接口返回异常, no suitable HttpMessageConvert found for response type
报错异常如下:
//根据图片特征 去查询人员信息 ResultVo<List> personVos = ipbdFaceLibPersonApi.queryFacePersonByFeature(libPersonPageForm); @FeignClient(name = "ipbd-business-manager-app", path = "/lib/facePerson", fallbackFactory = IpbdFaceLibPersonServiceFallback.class) public interface IpbdFaceLibPersonApi { /** * * 根据特征 查询人像人员信息 * @param param * @return */ @ApiOperation(value = "根据特征 查询人像人员信息") @ResponseBody @RequestMapping("/queryFacePersonByFeature") ResultVo<List<IpbdFaceLibPersonVo>> queryFacePersonByFeature(@RequestBody @ApiParam(value = "param") IpbdFaceLibPersonPageForm param); } @Api(value = "人员表控制器", tags = {"人员表管理"}) @RestController @RequestMapping("/lib/facePerson") @Slf4j public class IpbdFaceLibPersonController { /** * 根据特征 查询人像人员信息 * @param param * @return */ @ApiOperation(value = "根据特征 查询人像人员信息") @ResponseBody @RequestMapping("/queryFacePersonByFeature") public ResultVo<List<IpbdFaceLibPersonVo>> queryFacePersonByFeature(@RequestBody @ApiParam(value = "param") IpbdFaceLibPersonPageForm param){ List<IpbdFaceLibPersonVo> resultList = ipbdFaceLibPersonService.queryFacePersonByFeature(param); return ResultUtils.success(resultList); } }
上面代码是feign接口调用的封装,以及controller层的封装,可以看到接口返回的对象是ResultVo<List>,请求接收的对象也是一致的,但是无论怎么请求,接口都返回调用异常,无法convert转换
通过查看feign源码发现,所有feign接口请求后的结果都需要经过decode解析, 那么看下返回的对象是否有无法解析的字段。 整个对象类中, 只有时间字段是增加了JsonFormat转换的,尝试把时间字段去掉之后,发现不报错了, 那么问题就出现在时间字段json序列化后decode无法解析的问题了
这里JsonFormat是jackson库的而JsonField是fastjson的,这里我们换成@JSONField(format = “yyyy-MM-dd HH:mm:ss”)去格式化就正常返回了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。