OpenFeign远程调用返回的是List<T>类型的数据

在使用 OpenFeign 进行远程调用时,如果接口返回的是 List 类型的数据,可以通过以下方式处理:

直接定义返回类型为List

Feign 默认支持 JSON 序列化/反序列化,如果服务端返回的是 List的JSON格式数据,可以直接在 Feign 接口中定义返回类型为 List。

java 复制代码
@FeignClient(name = "item-service")
public interface ItemClient {
    @GetMapping("/items")
    List<Item> getItems();
}

使用ResponseResult包装返回类型

java 复制代码
@FeignClient(name = "item-service")
public interface ItemClient {
    @GetMapping("/items")
    ResponseResult<List<Item>> getItems();
}

使用 ResponseResult包装返回类型时,调用 Feign 客户端获取数据时,需要先将data转成JSON字符串,再将JSON字符串解析为List<Item>

java 复制代码
ResponseResult responseResult = itemClient.getItems();
String itemsJson = JSON.toJSONString(responseResult.getData());
List<Item> items = JSON.parseArray(itemsJson, Item.class);

直接强制转换List<Map<String, Object>>List<WmChannel>是不安全的,因为Java的泛型在运行时会被擦除,编译器无法检查具体的类型是否匹配。而JSON会根据目标类的定义,逐个字段地将数据映射到对象中,从而确保类型安全。
List<WmChannel> wmChannels = (List<WmChannel>)responseResult.getData();

相关推荐
雪碧聊技术5 天前
服务拆分—服务远程调用如何操作?一文详解
微服务·openfeign·loadbalancer·服务远程调用
九转苍翎7 天前
微服务学习笔记(3)——基于SpringCloud OpenFeign实现远程调用
spring cloud·openfeign
利刃大大2 个月前
【SpringCloud】远程调用OpenFeign && 快速入手 && 参数传递 && 继承方式 && 抽取方式 && 远程部署
后端·spring·spring cloud·openfeign·远程调用
七夜zippoe3 个月前
OpenFeign全解 声明式REST客户端原理与配置实战
java·负载均衡·springcloud·openfeign·动态代理·核心配置
惊讶的猫3 个月前
OpenFeign(声明式HTTP客户端)
网络·网络协议·http·微服务·openfeign
编程彩机3 个月前
互联网大厂Java面试:从微服务到分布式缓存的技术场景解析
redis·spring cloud·消息队列·微服务架构·openfeign·java面试·分布式缓存
J_liaty3 个月前
OpenFeign微服务实战指南
微服务·云原生·架构·openfeign
J_liaty3 个月前
RPC、Feign与OpenFeign技术对比详解
网络·网络协议·rpc·openfeign·feign
递归尽头是星辰3 个月前
Dubbo vs OpenFeign:Spring Cloud Alibaba 生态下的 RPC 框架选型与迁移实战
dubbo·微服务架构·openfeign·微服务选型·rpc 框架·http 客户端