Feign调用把GET请求自动转成POST请求解决:Request method 'POST' not supported

简介: Feign调用把GET请求自动转成POST请求解决:Request method 'POST' not supported

问题场景:


调用类型:Feign调用


请求类型:GET请求


请求参数:body(规范:POST:body)


解决方案:添加maven


<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId></dependency>


原理简述:


Feign原生的连接工具使用了jdk中的rt.jar包的HttpURLConnection 类 进行实现,


其中,对应HttpURLConnection 的连接对象,Feign默认的实现是设置了doOutput为true


connection.setDoOutput(true);


这个设置也正是解释了为什么Feign只要发现你存在body体对象就会将Get请求转成Post


感兴趣的可以查看更详细的原理分析:https://www.freesion.com/article/9609777518/


总结:


Feign使用的原生的连接工具,就是发现你的传递参数是body时,就会将Get请求转成Post。所以解决方案:用feign-httpclient替换掉原生的连接工具。


注:当我们使用:GET、POST、PUT、DELETE请求类型时,还是要注意规范,不然会出现你意想不到的错误!


规范参考:GET:少量参数查询、路径上直接拼接参数,POST:查询参数较多,PUT:修改方法时使用,DELETE:删除方法时使用!

目录
相关文章
|
10月前
post 的接口请求
post 的接口请求
52 0
|
JSON 数据格式
okhttp3 模拟get、post(json参数传递,form表单提交)
本文是博主学习okhttp3 的记录,希望对大家有所帮助。
1969 0
|
4月前
|
XML JSON 前端开发
获取后端接口请求中的参数(@PathVariable,@RequestParam,@RequestBody区别,使用postman请求
获取后端接口请求中的参数(@PathVariable,@RequestParam,@RequestBody区别,使用postman请求
125 1
|
4月前
|
应用服务中间件 Apache
消息 Request method ‘POST‘ not supported
消息 Request method ‘POST‘ not supported
|
4月前
|
API
webclient在delete请求时携带request body
webclient在delete请求时携带request body
87 0
|
4月前
|
Web App开发 前端开发 JavaScript
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
59 0
|
Web App开发 网络协议 安全
GET和POST两种基本请求方法的区别
GET和POST两种基本请求方法的区别
|
Java Apache 网络架构
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)(上)
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)
restTemplate发送携带header参数的get和post请求demo
restTemplate发送携带header参数的get和post请求demo
228 0
|
负载均衡 Java Spring
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)(下)
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)(下)
【小家Spring】Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method ‘POST‘ not supported (附带其余好几个坑)(下)