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请求,另外一个解决方式:

  1. 首先需要在Feign的参数上添加@RequestBody 注解,这一步非常重要
  2. 添加配置:feign.httpclient.enabled=true
  3. 添加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。

后续遇到问题继续补充!!!

posted @   庄子游世  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示