解决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 相关文章推荐
MybatisPlus代码生成器的使用方法详解
Jun 13 Java/Android
Spring Boot两种全局配置和两种注解的操作方法
Jun 29 Java/Android
Java使用Unsafe类的示例详解
Sep 25 Java/Android
深入浅出讲解Java8函数式编程
Jan 18 Java/Android
详解Spring Security中的HttpBasic登录验证模式
Mar 17 Java/Android
Java数组详细介绍及相关工具类
Apr 14 Java/Android
Spring Boot 实现 WebSocket
Apr 30 Java/Android
Java 数组的使用
May 11 Java/Android
springboot 全局异常处理和统一响应对象的处理方式
Jun 28 Java/Android
利用Java连接Hadoop进行编程
Jun 28 Java/Android
MyBatis在注解上使用动态SQL方式(@select使用if)
Jul 07 Java/Android
springboot+rabbitmq实现智能家居实例详解
Jul 23 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获取当前时间的毫秒数的方法
2014/01/26 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python3计算三角形的面积代码
2017/12/18 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
Python是怎样处理json模块的
2020/07/16 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
产品促销活动策划书
2014/01/15 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
二婚主持词
2015/06/30 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python