Feign GET请求参数传递问题

复制代码
@GetMapping("/list")
ReturnMessage<EventMonitorResp> getAlarmList(AlarmReq alarmReq);

如果这种方式定义则会报下面错误:

org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' is not supported at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping

实际client定义和controller都是用GET请求,大概原因,feign将该get方法转为了post,导致出错。

这个问题的主要的原因就是Feign默认使用的连接工具实现类,发现只要你有对应的body体对象,就会强制把GET请求转换成POST请求。

Feign源码在解析含有@FeignClient注解的接口的时候,在创建代理对象的时候,代理对象在去解析含有@RequestParam注解的参数的时候,会将该参数增强到url上,而不是作为body传递。

如果controller中用对象接收参数,即使使用了@RequestParam注解,参数还是传不过去;

如果controller中用具体参数接收的,使用@RequestParam注解是可以传过去的;

@FeignClient(name = "target-service")

public interface TargetServiceClient {

@GetMapping("/api/resource")

ResourceResponse getResource(@RequestParam("param1") String param1, @RequestParam("param2") Integer param2);

}

public interface TargetServiceController {

@GetMapping("/api/resource")

public ResourceResponse getResource(@RequestParam("param1") String param1, @RequestParam("param2") Integer param2) {

}

}

相关推荐
炼金士20 分钟前
分布式虚拟 Actor 技术在码头生产调度中的应用研究
分布式·dapr·actor·集装箱码头
xuyanqiangCode1 小时前
KAFKA自动修改所有以**开头的主题脚本
分布式·kafka·linq
wanhengidc1 小时前
云手机的网络架构
服务器·网络·游戏·智能手机·架构·云计算
xinyu_Jina2 小时前
WebRTC的P2P实践:局域网文件传输中的信令、ICE与DataChannel架构解析
架构·webrtc·p2p
syker3 小时前
太极指令集架构(TCIS)v1.1与主流指令集比较研究报告
c++·架构
国科安芯3 小时前
FreeRTOS 在 AS32系列RISC-V 架构MCU电机驱动中的应用实践与优化
单片机·嵌入式硬件·安全·架构·压力测试·risc-v·安全性测试
回家路上绕了弯4 小时前
高并发订单去重:布隆过滤器过滤已存在订单号的实战方案
分布式·后端
想用offer打牌5 小时前
修复seata的HikariCP中加载驱动程序类的问题
后端·架构·开源
工藤学编程5 小时前
零基础学AI大模型之Milvus部署架构选型+Linux实战:Docker一键部署+WebUI使用
人工智能·架构·milvus