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

}

}

相关推荐
u***j32416 分钟前
GitHub上10个优秀的微服务开源项目
微服务·开源·github
爱泡脚的鸡腿21 分钟前
uni-app D4 实战(小兔鲜)
前端·vue.js·架构
zandy10111 小时前
架构深度解析:衡石科技如何凭借云原生与存算分离架构重塑BI性能边界
科技·云原生·架构
GISer_Jing1 小时前
3DThreeJS渲染核心架构深度解析
javascript·3d·架构·webgl
喵了几个咪2 小时前
Golang微服务框架Kratos实现Thrift服务
开发语言·微服务·golang
回家路上绕了弯2 小时前
日增千万数据:数据库表设计与高效插入存储方案
分布式·后端
Code_Artist2 小时前
robfig/cron定时任务库快速入门
分布式·后端·go
稚辉君.MCA_P8_Java2 小时前
通义千问 SpringBoot 性能优化全景设计(面向 Java 开发者)
大数据·hadoop·spring boot·分布式·架构
90后小陈老师2 小时前
用户管理系统 03 搭建基本结构 | Java新手实战 | 最小架构用户管理系统(SpringBoot+Vue3)
java·spring boot·架构
AutoMQ4 小时前
腾讯音乐如何基于 AutoMQ 降低 Kafka 50%+ 成本
架构