解决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 相关文章推荐
总结一下关于在Java8中使用stream流踩过的一些坑
Jun 24 Java/Android
利用Java设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
java基础——多线程
Jul 03 Java/Android
Java移除无效括号的方法实现
Aug 07 Java/Android
SpringBoot整合Mybatis Generator自动生成代码
Aug 23 Java/Android
Java 超详细讲解十大排序算法面试无忧
Apr 08 Java/Android
Java实现扫雷游戏详细代码讲解
May 25 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 Java/Android
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
Jun 21 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
java获取一个文本文件的编码(格式)信息
Sep 23 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操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
PHP7修改的函数
2021/03/09 PHP
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
Python中property属性实例解析
2018/02/10 Python
python实现自动解数独小程序
2019/01/21 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
捐助倡议书范文
2014/04/15 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
redis 解决库存并发问题实现数量控制
2022/04/08 Redis