解决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 相关文章推荐
新手入门Jvm-- JVM对象创建与内存分配机制
Jun 18 Java/Android
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
springboot如何初始化执行sql语句
Jun 22 Java/Android
分析设计模式之模板方法Java实现
Jun 23 Java/Android
利用Java设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
每日六道java新手入门面试题,通往自由的道路
Jun 30 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
Spring Data JPA框架的核心概念和Repository接口
Apr 28 Java/Android
Java 死锁解决方案
May 11 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
Jun 21 Java/Android
spring 项目实现限流方法示例
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中动态显示签名和ip原理
2007/03/28 PHP
PHP高自定义性安全验证码代码
2011/11/27 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
JavaScript日历实现代码
2010/09/12 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
jQuery输入框密码的显示隐藏【代码分享】
2017/04/29 jQuery
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
马丁路德金演讲稿
2014/05/19 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python