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) {

}

}

相关推荐
切糕师学AI10 分钟前
ARM架构程序状态寄存器(PSR)详解:从基础概念到现代实现
arm开发·架构·嵌入式·程序状态寄存器·psr
大写-凌祁14 分钟前
UniTS:任务统一架构的遥感时间序列生成模型
架构
测试人社区—小叶子19 分钟前
边缘计算与AI:下一代智能应用的核心架构
运维·网络·人工智能·python·架构·边缘计算
TG:@yunlaoda360 云老大26 分钟前
如何选择适合自己业务的腾讯云国际站代理商VPC架构?
架构·云计算·腾讯云
weixin_3077791343 分钟前
Jenkins Jakarta Mail API 插件:邮件功能的核心库
运维·开发语言·架构·jenkins
醉风塘1 小时前
RabbitMQ状态与配置深度解读:构建高性能消息中间件的关键指标
分布式·rabbitmq
乾元1 小时前
动态路由策略回归测试:把 CI/CD 思想带入网络路由(工程化 · Near-term)
运维·服务器·网络·人工智能·ci/cd·架构·智能路由器
李拾叁的摸鱼日常1 小时前
为什么mysql varchar 类型一般都设置为64/128/256/512 ?
后端·架构
踏浪无痕1 小时前
每天上亿条日志,Elasticsearch 是怎么扛住的?
后端·架构·设计
CinzWS1 小时前
基于Cortex-M3 SoC的eFuse模块--实现与验证考量
fpga开发·架构·efuse