记录学习FeignClien遇到的坑

本文解决Feign调用中404路径错误问题,通过调整path参数修复;并介绍如何正确接收JSON数据,避免使用不匹配的对象导致数据无法映射;最后提供将JSON转换为实体对象的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.报错404路径错误

第一次测试调用报错404.
在这里插入图片描述
postman调用测试环境是没问题的.
在这里插入图片描述
代码如下:
master-data-main是nacos微服务服务列表的服务名.也是调用的测试环境.
在这里插入图片描述
经过对比发现,path少了一个master-data,加上master-data就解决了.


2.调用成功后返回数据为null.

启动本地服务,调用测试环境的测试接口.
controller.
在这里插入图片描述
在这里插入图片描述
调用服务.
在这里插入图片描述
调用结果和预期的不符合.
在这里插入图片描述
服务方接口.
在这里插入图片描述
经过排查发现,调用的服务返回的一个Resultsjson格式的数据.我用对象去接收是不会映射值的.

feign接口改成.
在这里插入图片描述

调用结果:
在这里插入图片描述


3.Feign返回的JSON对象转化为所需要的实体:

// json ,调用返回的数据.
JSONObject json = testFeign.result(consultantCode);
 //将json转成需要的对象,data为实体需要的数据
ConsultantDTO  consultantDTO =  this.convertValue(json.get("data"),ConsultantDTO.class);

 /** convertValue方法
  * @param bean  object对象
  * @param clazz  要转的class类
  * @param <T>第一个T声明这个方法是个泛型方法,第二个T是表示这个方法的返回类型.
  * @return  返回具体的实体对象.
*/
public static <T> T convertValue(Object bean, Class<T> clazz){
    try{
       ObjectMapper mapper = new ObjectMapper();
        return mapper.convertValue(bean, clazz);
     }catch(Exception e){
        e.printStackTrace();
        return null;
     }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值