解决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 14 Java/Android
Java Dubbo框架知识点梳理
Jun 26 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
springboot+zookeeper实现分布式锁
Mar 21 Java/Android
Netty分布式客户端处理接入事件handle源码解析
Mar 25 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
Java Spring Boot 正确读取配置文件中的属性的值
Apr 20 Java/Android
mybatis-plus模糊查询指定字段
Apr 28 Java/Android
Java实现简单小画板
Jun 10 Java/Android
Spring Boot 的创建和运行示例代码详解
Jul 23 Java/Android
spring boot实现文件上传
Aug 14 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
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
javascript 页面只自动刷新一次
2009/07/10 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
Python3基础之基本运算符概述
2014/08/13 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
家具促销活动方案
2014/02/16 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
文体活动实施方案
2014/03/27 职场文书
环保倡议书50字
2014/05/15 职场文书
工程款申请报告
2015/05/15 职场文书
2015国庆节宣传语
2015/07/14 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python
Android存储中最基本的文件存储方式
2022/04/30 Java/Android