解决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 Swing实现自助取款机系统
Jun 11 Java/Android
使用feign服务调用添加Header参数
Jun 23 Java/Android
spring boot项目application.properties文件存放及使用介绍
Jun 30 Java/Android
Java中多线程下载图片并压缩能提高效率吗
Jul 01 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
Android基于Fresco实现圆角和圆形图片
Apr 01 Java/Android
Android Rxjava3 使用场景详解
Apr 07 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Flutter Navigator 实现路由传递参数
Apr 22 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
Java 多线程并发FutureTask
Jun 28 Java/Android
Android RecyclerView实现九宫格效果
Jun 28 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
python读写二进制文件的方法
2015/05/09 Python
python简单获取数组元素个数的方法
2015/07/13 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
网络工程师职业规划
2014/02/10 职场文书
学习演讲稿范文
2014/05/10 职场文书
党员政治学习材料
2014/05/14 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
商业门面租房协议书
2014/11/25 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
公司年夜饭通知
2015/04/25 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
Python函数中的不定长参数相关知识总结
2021/06/24 Python
PO模式在selenium自动化测试框架的优势
2022/03/20 Python