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

}

}

相关推荐
Thneonl8 分钟前
99.9% 置信被拒收,76% 靠两个佐证进场
人工智能·架构
Thneonl8 分钟前
stateless 4/6 漏判,stateful 3/5 错杀:该信谁?
人工智能·架构
mldong8 分钟前
同一个审批流引擎,我写了两次:一次 11226 行,一次 7036 行
后端·架构
这个DBA有点耶10 分钟前
数据库部署架构深潜:集中式、分布式、云原生的技术原理、演进逻辑与选型框架
数据库·架构
不好听61311 分钟前
混合检索到底在混什么:为什么纯向量检索会认错人——Hybrid RAG 系列之一
架构
Erishen12 分钟前
纯本地只读视频索引:blake3 内容去重与 Range 预览,我如何做到绝不改动一个原文件
架构·开源
用户268520632355512 分钟前
基于 vue3 完成领域模型架构建设
架构
一粒麦仔14 分钟前
SafeTensors vs GGUF:大模型权重格式的硬核拆解
人工智能·后端·架构
vivo互联网技术23 分钟前
知识不是文件,也不是向量 | KDC 系列 02
人工智能·设计模式·架构
一粒麦仔23 分钟前
llama.cpp / Ollama / LM Studio:本地 LLM 推理栈的硬核拆解
人工智能·后端·架构