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请求,另外一个解决方式:
- 首先需要在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。
后续遇到问题继续补充!!!
以上是关于Feign 的问题记录的主要内容,如果未能解决你的问题,请参考以下文章
spring cloud feign client 上传文件遇到问题记录
使用 Hystrix Feign 记录请求和响应 json 有效负载
Feign Client超时时间配置以及单独给某接口设置超时时间方法记录