通过feign调用,服务提供者返回IPage,客户端无法获取到结果;主要原因就是jackson需要默认构造函数序列化;
@PostMapping(value ="/page",consumes = MediaType.APPLICATION_JSON_VALUE)
ResponseModel<IPage<CommentDTO>> loadCommentPage(@RequestBody Comment condition);
Mybatis-plus修改方式
IPage改成Page即可
spring-data 修改方式也是一样的,最简单就是自己实现IPage就可以了,也可以通过SpringMvcContract方式重造结果集
feign的几种可能性
1、接口直接被调用
2、接口直接被调用的同时其他模块也需要这个接口,那么其他模块就需要通过fegin调用
3、不会被直接调用,所有接口通过feign调用
基于以上三点,有如下可能性
1、在使用fegin时候,服务提供者到底应该直接返回ResponseModel(统一返回值)还是只返回结果?
1和3直接返回ResponseModel即可,2如果直接返回ResponseModel那么调用者就需要自己判断code或者直接返回给前段不做任何处理,如果直接返回结果那么直接被调用那个接口就无法统一返回值;建议直接写成俩个方法
参考地址:
https://gitee.com/baomidou/mybatis-plus/issues/IRX93
https://github.com/spring-cloud/spring-cloud-netflix/issues/782
https://github.com/spring-cloud/spring-cloud-netflix/issues/556
是否可以使用非默认构造函数的Jackson自定义反序列化器?
https://oomake.com/question/2032342