解决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 11 Java/Android
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
探讨Java中的深浅拷贝问题
Jun 26 Java/Android
实体类或对象序列化时,忽略为空属性的操作
Jun 30 Java/Android
SpringBoot工程下使用OpenFeign的坑及解决
Jul 02 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
Springboot如何同时装配两个相同类型数据库
Nov 17 Java/Android
Java练习之潜艇小游戏的实现
Mar 16 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
Mar 22 Java/Android
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 Java/Android
Android 界面一键变灰 深色主题工具类
Apr 28 Java/Android
利用正则表达式匹配浮点型数据
May 30 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的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
浅谈js中的闭包
2015/03/16 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
综合素质的自我鉴定
2013/10/07 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
学校元旦晚会方案
2014/02/19 职场文书
电视购物广告词
2014/03/19 职场文书
经营理念口号
2014/06/21 职场文书
南湾猴岛导游词
2015/02/09 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书