解决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 16 Java/Android
ConstraintValidator类如何实现自定义注解校验前端传参
Jun 18 Java/Android
死磕 java同步系列之synchronized解析
Jun 28 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
Mybatis-plus在项目中的简单应用
Jul 01 Java/Android
gateway与spring-boot-starter-web冲突问题的解决
Jul 16 Java/Android
OpenCV实现普通阈值
Nov 17 Java/Android
Java tomcat手动配置servlet详解
Nov 27 Java/Android
Java实现给Word文件添加文字水印
Feb 15 Java/Android
Spring Data JPA框架自定义Repository接口
Apr 28 Java/Android
Spring JPA 增加字段执行异常问题及解决
Jun 10 Java/Android
一文了解Java动态代理的原理及实现
Jul 07 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之数据库操作详解及乱码解决!
2007/01/02 PHP
基于pear auth实现登录验证
2010/02/26 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
JS焦点图切换,上下翻转
2011/05/12 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
jQuery实现验证用户登录
2019/12/10 jQuery
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
python生成随机mac地址的方法
2015/03/16 Python
整理Python最基本的操作字典的方法
2015/04/24 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
业务经理岗位职责
2013/11/11 职场文书
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
高三复习计划
2015/01/19 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
谢师宴学生致辞
2015/07/27 职场文书