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

}

}

相关推荐
2301_768350233 分钟前
RabbitMq工作流程
分布式·rabbitmq
CoLiuRs33 分钟前
异步任务使用场景与实践
微服务·性能优化·golang
孟意昶2 小时前
Doris专题17- 数据导入-文件格式
大数据·数据库·分布式·sql·doris
zandy10112 小时前
HENGSHI SENSE异构过滤架构:基于三层执行引擎的跨源联邦查询性能优化实践
性能优化·架构·agentic bi·异构结构
brzhang2 小时前
我用 Flutter 做了个小游戏,结果发现这玩意有点意思
前端·后端·架构
用户6387994773053 小时前
我把我的 monorepo 迁移到 Bun,这是我的真实反馈
javascript·架构
brzhang3 小时前
用 Vue 写原生 iOS/Android 应用,我发现这个库比 uni 要轻量且靠谱些
前端·后端·架构
Value_Think_Power3 小时前
golang struct 里组合interface 可以解决什么问题
架构
会跑的葫芦怪3 小时前
RabbitMQ全面详解:从核心概念到企业级应用
java·分布式·rabbitmq
my91115264 小时前
地平线征程6芯片深度解析2:BPU 纳什架构如何重构智能驾驶计算范式
重构·架构