解决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设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
Java Kafka 消费积压监控的示例代码
Jul 01 Java/Android
Spring Boot 排除某个类加载注入IOC的操作
Aug 02 Java/Android
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
Dec 06 Java/Android
SpringBoot中使用Redis作为全局锁示例过程
Mar 24 Java/Android
Android超详细讲解组件ScrollView的使用
Mar 31 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
利用正则表达式匹配浮点型数据
May 30 Java/Android
SpringBoot使用AOP实现统计全局接口访问次数详解
Jun 16 Java/Android
Spring中bean集合注入的方法详解
Jul 07 Java/Android
MyBatis在注解上使用动态SQL方式(@select使用if)
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
咖啡语言
2021/03/03 咖啡文化
一个简单的MySQL数据浏览器
2006/10/09 PHP
PHP中for循环语句的几种变型
2006/11/26 PHP
php SQL之where语句生成器
2009/03/24 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
学习PHP session的传递方式
2016/06/15 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
python根据文件大小打log日志
2014/10/09 Python
Python数据结构之Array用法实例
2014/10/09 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
详解python中的线程
2018/02/10 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python多线程分块读取文件
2019/08/29 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
设计总监岗位职责
2013/12/07 职场文书
结婚幸福感言
2015/08/01 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫