美文网首页遇到过的问题排查
【SpringCloud】Feign解决Get请求自动转化成PO

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

作者: 陈追风 | 来源:发表于2019-08-19 10:56 被阅读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的配置项
    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>
    

    搞定!

    相关文章

      网友评论

        本文标题:【SpringCloud】Feign解决Get请求自动转化成PO

        本文链接:https://www.haomeiwen.com/subject/kdxssctx.html