Feign支持Patch方法

原文:

http://sylarlove.coding.me/2016/04/21/%E8%AE%A9Feign%E6%94%AF%E6%8C%81PATCH%E6%96%B9%E6%B3%95/

问题描述

FeignClient 中声明了这么一个方法

1
2
@RequestMapping(method = RequestMethod.PATCH, value = "/agents/{id}", consumes = "application/json")
 void update(@PathVariable("id")String id, @RequestBody Map<String,Object> info);

 

其它得方法调用都能成功,就是这个方法调用得时候报异常:

1
2
com.netflix.hystrix.exception.HystrixRuntimeException: update timed-out and no fallback available.
...

 

解决过程

这个异常是 hystrix(断路器)抛出的,只能看出来调用超时。为了排除干扰,我先暂时禁用Feign的断路器:在配置文件加feign.hystrix.enabled: false,然后再次调用试试:
这次异常信息能看出来了,看来失败信息确实是被hystrix给吃了。。。

1
2
3
4
5
feign.RetryableException: Invalid HTTP method: PATCH executing PATCH http://agent-info/agents/0123456748
...
Caused by: java.net.ProtocolException: Invalid HTTP method: PATCH
  at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:440)
...

 

看来这个问题是因为java.net.HttpURLConnection.setRequestMethod 不支持PATCH方法,无法将请求发送出去。
HttpClient 应该支持PATCH方法。
谷歌一下关键词 spring feign httpclient patch 找到 答案

解决方式

netflix 有feign的httpclient支持。maven加入下面的依赖就搞定了。

1
2
3
4
<dependency>
   <groupId>com.netflix.feign</groupId>
   <artifactId>feign-httpclient</artifactId>
</dependency>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值