遇到过的问题排查

【SpringCloud】Feign解决Get请求自动转化成PO

2019-08-19  本文已影响0人  陈追风

Feign

/**
 * @author mirror
 */
@FeignClient(
        value = "pocket-account-management",
        configuration = FeignAccMgrServiceConfiguration.class)
public interface AccMgrService {
    ...
    @GetMapping(ACC_URL_PREFIX + "/query/currencys")
    ResultData queryCurrencysByIdx(@RequestBody QueryIdx queryIdx);
    ...
}

服务提供者

    @GetMapping("/query/currencys")
    public ResultData queryCurrencysByIdx(@RequestBody QueryIdx queryIdx) {
        ...
        return ...;
    }

调用时出现错误:Caused by: feign.FeignException$MethodNotAllowed: status 405 reading

明明Feign发送的是Get请求,到了提供者这边却变成了Post

原因

因为Feign默认使用的连接工具实现类,所以里面发现只要你有body体对象,就会强制的把GET请求转换成POST请求。

解决办法

步骤

feign:
  httpclient:
    enabled: true
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.9</version>
        </dependency>
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
            <version>10.2.3</version>
        </dependency>

搞定!

上一篇下一篇

猜你喜欢

热点阅读