Feign 的问题记录

Posted 我想回家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

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

以上是关于Feign 的问题记录的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud feign client 上传文件遇到问题记录

使用 Hystrix Feign 记录请求和响应 json 有效负载

Feign Client超时时间配置以及单独给某接口设置超时时间方法记录

Feign REST Client:如何获取 HTTP 状态?

关于Spring Cloud Feign的一些记录!

JAVA踩坑记录Feign调用服务时,get请求参数异常