解决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 11 Java/Android
Java各种比较对象的方式的对比总结
Jun 20 Java/Android
分析设计模式之模板方法Java实现
Jun 23 Java/Android
SpringBoot整合JWT的入门指南
Jun 29 Java/Android
spring boot项目application.properties文件存放及使用介绍
Jun 30 Java/Android
详细了解MVC+proxy
Jul 09 Java/Android
OpenCV实现反阈值二值化
Nov 17 Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 23 Java/Android
教你在 Java 中实现 Dijkstra 最短路算法的方法
Apr 08 Java/Android
Java时间工具类Date的常用处理方法
May 25 Java/Android
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
Jul 15 Java/Android
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
Aug 05 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
Syphon 秘笈
2021/03/03 冲泡冲煮
php分页函数
2006/07/08 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
详解python3中tkinter知识点
2018/06/21 Python
python去除文件中重复的行实例
2018/06/29 Python
python3.x实现base64加密和解密
2019/03/28 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
物流经理自我评价
2013/09/23 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
个人委托书怎么写
2014/09/17 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
六年级作文之家庭作文
2019/12/12 职场文书