前端框架选型是企业提升开发效率与用户体验的关键因素
1303
2022-10-20
通过FeignClient调用微服务提供的分页对象IPage报错的解决
目录问题描述解决办法feign返回IPage无法返回结果集MybatisGLVFQpj-plus修改方式feign的几种可能性基于以上三点,有如下可能性
问题描述
通过FeignClient调用微服务提供的分页对象IPage报错
{"message": "Type definition error: [simple type, class com.baomidou.mybatisplus.core.metadata.IPage]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information\n at [Source: (PushbackInputStream); line: 1, column: 37] (through reference chain: com.test.invoice.vo.ResponseVO[\"data\"])"}
解决办法
当前mybatis-plus 本不支持 IPage,使用Page即可
生产者controller
Feign-api接口定义
消费者,Feign-api 调用
feign返回IPage无法返回结果集
通过feign调用,服务提供者返回IPage,客户端无法获取到结果;主要原因就是jackson需要默认构造函数序列化;
@PostMapping(value ="/page",consumes = MediaType.APPLICATION_jsON_VALUE)
ResponseModel
Mybatis-plus修改方式
IPage改成Page即可
spring-data 修改方式也是一样的,最简单就是自己实现IPage就可以了,也可以通过SpringMvcContract方式重造结果集
feign的几种可能性
1、接口直接被调用
2、接口直接被调用的同时其他模块也需要这个接口,那么其他模块就需要通过fegin调用
3、不会被直接调用,所有接口通过feign调用
基于以上三点,有如下可能性
1、在使用fegin时候,服务提供者到底应该直接返回ResponseModel(统一返回值)还是只返回结果?
1和3直接返回ResponseModel即可,2如果直接返回ResponseModel那么调用者就需要自己判断code或者直接返回给前段不做任何处理,如果直接返回结果那么直接被调用那个接口就无法统一返回值;建议直接写成俩个方法
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~