Feign接口请求返回异常 no suitable HttpMessageConvert found for response type

问题场景:

后端调用feign接口请求, 接口返回异常, no suitable HttpMessageConvert found for response type


问题描述

报错异常如下:

c 复制代码
 //根据图片特征 去查询人员信息
  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")去格式化就正常返回了

相关推荐
亦暖筑序14 分钟前
Java 8老系统AI Workflow实战:把一次性AI对话升级成可恢复工作流
java·后端
敲代码的彭于晏1 小时前
Bean 生命周期完全图解:前端同学也能看懂的 Spring 核心机制
java·前端·后端
plainGeekDev2 小时前
ButterKnife → ViewBinding
android·java·kotlin
像我这样帅的人丶你还18 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩18 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia19 小时前
Mybatis的日志输入
java
亦暖筑序20 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户298698530141 天前
Java 实现 Word 文档加密与权限解除
java·后端
Yeats_Liao1 天前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿1 天前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试