解决SpringCloud Feign传对象参数调用失败的问题


Posted in Java/Android onJune 23, 2021

SpringCloud Feign传对象参数调用失败

  • 不支持GET请求方式
  • 使用Apache HttpClient替换Feign原生httpclient
  • @RequestBody接收json参数

bootstrap-local.yml

feign:
  httpclient:
    enabled: true

pom.xml

<!-- 使用Apache HttpClient替换Feign原生httpclient -->
<dependency>
    <groupId>com.netflix.feign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>8.18.0</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.3</version>
</dependency>

feignClient:

@FeignClient(name = "hd-ucenter-server", fallback = SysTestServerFallbackImpl.class)
public interface SysTestServer { 
    @RequestMapping(value = "/test/test", method = RequestMethod.POST, consumes = "application/json")
    Object test(CurrentUser currentUser);
}

RestController:

@RestController
@PostMapping("/test")
public class TestController {
 
    @RequestMapping(value = "/test")
    public Object test(@RequestBody CurrentUser currentUser) {
        System.out.printf("调用test\n");
       return currentUser;
    }
}

SpringCloud中Feign异常无法传递的问题

因为 cloud内部抛出异常不进行处理,Feign获取spring默认包装异常结果如下:

{
"timestamp": "2017-12-27 15:01:53",
"status": 500,
"error": "Internal Server Error",
"exception": "com.keruyun.loyalty.commons.master.exception.BusinessException",
"message": "Request processing failed; nested exception is {\"code\":1000, \"message\":\"test Exception\"}",
"path": "/coupon/cloud/commercial/8469"
}

自定义的异常处理下返回状态

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandlerResolver {
 
    //内部服务异常处理
    @ExceptionHandler(InternalApiException.class)
    public ResultResp<?> handleGlobalException(HttpServletResponse response, InternalApiException internalApiException) {
        ResultResp<?> resultResp = internalApiException.getResultResp();
        log.error(internalApiException.getMessage(), internalApiException);
        response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());//返回500异常
        response.setContentType(MediaType.APPLICATION_JSON_UTF8.toString());
        return resultResp;
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
Java实现多文件上传功能
Jun 30 Java/Android
总结Java对象被序列化的两种方法
Jun 30 Java/Android
mybatis 解决从列名到属性名的自动映射失败问题
Jun 30 Java/Android
一篇文章带你学习Mybatis-Plus(新手入门)
Aug 02 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
SpringDataJPA实体类关系映射配置方式
Dec 06 Java/Android
spring cloud eureka 服务启动失败的原因分析及解决方法
Mar 17 Java/Android
mybatis-plus模糊查询指定字段
Apr 28 Java/Android
springcloud整合seata
May 20 Java/Android
java实现面板之间切换功能
Jun 10 Java/Android
java实现web实时消息推送的七种方案
Jul 23 Java/Android
Spring boot admin 服务监控利器详解
Aug 05 Java/Android
详解Java实现设计模式之责任链模式
Jun 23 #Java/Android
Spring boot应用启动后首次访问很慢的解决方案
Java并发编程之详解CyclicBarrier线程同步
如何解决springcloud feign 首次调用100%失败的问题
分析设计模式之模板方法Java实现
基于Java的MathML转图片的方法(示例代码)
Jun 23 #Java/Android
springboot如何初始化执行sql语句
You might like
php 接口类与抽象类的实际作用
2009/11/26 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
python k-近邻算法实例分享
2014/06/11 Python
python使用append合并两个数组的方法
2015/04/28 Python
Python验证企业工商注册码
2015/10/25 Python
Python正则表达式常用函数总结
2017/06/24 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
提升python处理速度原理及方法实例
2019/12/25 Python
浅谈Python中的模块
2020/06/10 Python
python 6行代码制作月历生成器
2020/09/18 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
《陈涉世家》教学反思
2014/04/12 职场文书
同居协议书范本
2014/04/23 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server
分享几种python 变量合并方法
2022/03/20 Python