落地 Spring Could 所踩过的坑(二)Feign Client 调用服务接口报错

问题描述

为了方便统一管理服务接口调用,服务调用 HTTP 客户端采用Feign Client,实施下来一直很顺利。负责测试的同事反馈其中一个接口调用报错:Could not extract response: no suitable HttpMessageConverter found for response type ,诡异的事只有这一个接口报错。百度、谷歌都用上,大部分文章说要增加依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.4</version>
</dependency>

试过不管用,在国外技术网站发现一种说法是服务端 Response 消息没有指定 Content-Type, 也学着在 Configuration 类中手工增加 application/json 的 Content-Type ,还是无法解决问题。

原因分析

静下来看看日志信息,发现客户端实际上已经获取到了接口返回的json信息,并且在日志中能看到标示的信息格式就是 application/json ,那问题只能出在信息反序列化的阶段了。根据以往经验,先分析信息特征,没发现异常,唯一特殊的是里面有两个字段是日期格式,记得之前遇到过 Spring 自带的 Gson 序列化工具,需要指定日期数据的格式化规则,赶紧查看用于反序列化的模型类,发现带日期的字段,并没有注解日期格式规则,赶紧加上,启动项目测试,问题解决!!!

解决方法

在数据类型为日期的字段上,增加 JsonFormat 注解,并指定格式规则。

示例代码

/**
* 区域信息模型
*/
@Data
public class AreaVO extends AreaBaseVO {

    /**
     * 添加时间
     */
    @JsonProperty("create_time")
    @JsonFormat(pattern = DateUtilCustom.DATE_TIME_FORMAT)
    private Date createTime;

    /**
     * 最后修改时间
     */
    @JsonProperty("update_time")
    @JsonFormat(pattern = DateUtilCustom.DATE_TIME_FORMAT)
    private Date updateTime;

    @Override
    public String toString() {
        return super.toString();
    }
}

其中 DateUtilCustom.DATE_TIME_FORMAT 是预先定义的常量,值为:yyyy-MM-dd HH:mm:ss

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值