SpringCloud使用feign调用错误

首先启动类上扫描接口:

@EnableFeignClients(value = {"com.xxx.*.xxx.controller"})

不然编译器会报红色波浪线


一、Method has too many Body parameters

可能原因:方法内参数不止一个

        1、如果是例如:

        可以使用@RequestParam注解:

        2、使用对象:

        

        解决办法有两个:1、使用注解@SpringQueryMap

                                     2、把这两个对象整合为一个,例如把User中相关属性写到PageRequest中,保证只有一个对象。

二、Method metrics not annotated with HTTP method type (ex. GET, POST)

        可能原因:接口处有方法没有添加和@GetMapping功能类似的注解,即便具体业务没有做,也要加上,否则导入的服务无法启动。

三、调用接口得到了莫名其妙的结果

        可能原因:由于现在大多数采用resultful风格接口,而默认的feign使用GET请求调用接口,目标接口是使用对象接收时,会转为POST请求,你会看到日志里接口由GET自动变为了POST。

        解决办法:1、改为POST请求,如果接口是别人提供的就无法使用,因为可能别人服务已经联调好了,再去改很麻烦,加上别人很忙,可能也不会回头来给你改。

                          2、目标接口参数加上@SpringQueryMap,不过有可能像我在协同开发的时候,服务是别人的,无法改变别人的服务,那么只能换其它方式了。

                          3、本服务加上这两个依赖

<!-- httpclient -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.9</version>
</dependency>

<!-- feign-httpclient -->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
  <version>10.2.3</version>
</dependency>

                        4、像我们项目,本来我使用第3种方法解决,可能我们组长说我为什么导入这两个依赖,我解释之后,他新写了一个POST接口用于调用,所以最后究竟选择什么办法,还是看你们组长决定,哈哈。

                        5、再说一下,其实你自己无法改变别人的接口参数,你可以写一个一样的,只要请求地址正确,完全可以使用,例如他死活不愿意加注解,你可以在自己的新建的接口加上任意注解参数,也是可以使用的,但是极其不推荐,弊端很多,但是可以用于测试,最后还是去沟通一下,找组长。再说一遍:别这么干。

 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值