目录
  • 一、问题
  • 二、原因
  • 三、解决方法
    • 1、加入Feign的配置项
    • 2、添加依赖
  • 总结

    一、问题

    服务提供者

        /**
         *  获取用户ID
         * @param token
         * @return
         */
        @GetMapping("/getUserId")
        public String getUserId(@RequestParam(required = false) String token){
            return userService.getUserId(token);
        }

    服务调用

    @Service
    @FeignClient(value = "auth-service")
    public interface AuthClient {
        /**
         *  获取用户ID
         * @param token
         * @return
         */
        @GetMapping("/user/getUserId")
        public String getUserId(@RequestParam(required = false) String token);
    }

    会自动讲get请求转为post请求

    二、原因

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

    三、解决方法

    更换Apache的HttpClient

    1、加入Feign的配置项

    feign:
      httpclient:
        enabled: true

    2、添加依赖

            <!-- httpclient5 -->
            <dependency>
                <groupId>org.apache.httpcomponents.client5</groupId>
                <artifactId>httpclient5</artifactId>
            </dependency>
     
            <!-- feign-httpclient -->
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-httpclient</artifactId>
            </dependency>

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

    您可能感兴趣的文章:

    • SpringCloud OpenFeign Post请求400错误解决方案
    • SpringCloud组件OpenFeign之默认HTTP请求方式详解
    • OpenFeign实现携带请求头方案详细介绍
    • OpenFeign调用服务请求头丢失Token的解决
    • openFeign服务之间调用保持请求头信息处理方式