OpenFeign调用MybatisPlus分页接口失败

1. 问题描述

前置条件:

  1. 使用openFeign+mybatis-plus
  2. 使用json格式进行数据的传输,即限制web传输的数据格式为 content-type = application/json

问题:

1. 微服务A 通过 OpenFeign 调用微服务B 的分页接口时返回数据为 null

2. 直接调用微服务B的接口,返回数据正常

2. 问题解决过程

1. 首先在微服务B中查看该接口返回的数据,是否正常

结果:

调用微服务B的接口返回的数据正常,说明接口没有问题。

2.对比微服务A调用微服务B接口B接口接收的参数类型是否与微服务A返回接口类型不一致

结果:微服务A接口的接收参数类型与微服务A接口返回接口类型一致

3. 经分析发现,mybatis-plus中的IPage接口虽然实现了Serializable接口,但未实现Json序列化

解决方案:

自定义一个Page类,继承IPage接口的实现类Page,实现Json序列化即可,代码如下:

/**
 * ClassName Page
 *
 * @param <T>
 * @Description 自定义一个Page类,继承IPage接口的实现类Page,实现Json序列化
 * @Author mingtian
 * @Date 2022/5/16 20:43
 * @Version 1.0
 */
public class SerializableForFastJsonPage<T> extends Page<T> {

    /**
     * 实现json序列化
     *
     * @return
     */
    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }

}

结果:

使用SerializableForFastJsonPage类替换IPage类,即可实现json序列化数据进行返回。

4. 注意:在接收方进行反序列化的时候,需要指定具体的接收的数据类型,不可使用泛型,使用泛型会导致接收到的数据为null。

 

posted @ 2022-05-17 10:09  明天,你好啊  阅读(323)  评论(0编辑  收藏  举报