Feign 的问题记录
@PathVariable 问题
在Feign中使用@PathVariable注解的时候,一定要添加value值,即 @PathVariable(value="value_name"),否则依赖者方启动项目会出现 Feign PathVariable annotation was empty on param 0 报错信息。
对比:
// 正确写法:
@RequestMapping(value = "/ruprocdef/getInitiator/{procInstId}", method = RequestMethod.GET)
public Response getStartUsers(@PathVariable("procInstId") String procInstId);
// 错误写法
@RequestMapping(value = "/ruprocdef/getInitiator/{procInstId}", method = RequestMethod.GET)
public Response getStartUsers(@PathVariable String procInstId);
Get请求自动变Post请求
在使用Feign的过程中,如果我们的请求是Get请求,但是传递的是对象参数,这里的对象指的是复杂对象,我们自定义的,而不是Sting,Integer,那么这些参数会放在RequestBody里面,那在Feign调用的时候发现body里面有参数,就会将Get请求转变为Post请求。最简单的解决方式是将GET变POST请求,另外一个解决方式:
- 首先需要在Feign的参数上添加@RequestBody 注解,这一步非常重要
- 添加配置:feign.httpclient.enabled=true
- 添加pom依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
就可以,如果没有第一步,只有2和3,那么出现的问题就是传过去的参数全部变成了null。
后续遇到问题继续补充!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!