解决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实战之用Swing实现通讯录管理系统
Jun 13 Java/Android
java中重写父类方法加不加@Override详解
Jun 21 Java/Android
SpringBoot工程下使用OpenFeign的坑及解决
Jul 02 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 Java/Android
关于springboot配置druid数据源不生效问题(踩坑记)
Sep 25 Java/Android
springboot中rabbitmq实现消息可靠性机制详解
Sep 25 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
Spring Boot项目传参校验的最佳实践指南
Apr 05 Java/Android
教你在 Java 中实现 Dijkstra 最短路算法的方法
Apr 08 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
Jun 01 Java/Android
SpringBoot详解整合Redis缓存方法
Jul 15 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集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
Extjs学习笔记之六 面版
2010/01/08 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
关于Python作用域自学总结
2019/06/10 Python
python里运用私有属性和方法总结
2019/07/08 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
肯尼迪就职演说稿
2013/12/31 职场文书
遗嘱继承公证书
2014/04/09 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
个人党性分析材料
2014/12/19 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书