1. 问题
使用的是 2.1.1
版本的 feign
,进过大量的测试,无论是标准是 @PostMapping
还是 @GetMapping
,只要参数标注 @RequestParam
,调用的时候就一律都用 Get
请求,也就是说把参数拼接到 URL
上。如果想使用Post 请求,需要在参数标记 @RequestBody
,这样无论是 Get
还是 Post
都一律使用 Post
。
以下有几种的实现方式可以做到配置区分 Post
和 Get
请求。下列方案可能有缺陷,请慎用。
2. 解决办法
2.1 增加 feign 过滤器
增加的 feign 拦截器,此拦截器是在 RequestTemplate 构建完成后执行的,我们手动再进行加工一下。把Post 相关的参数写入到 Body 里面,从而达到目的。
1、增加feign的拦截器 FeignRequestInterceptor
import feign.*;
import feign.template.QueryTemplate;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMeth