feign.FeignException$BadRequest: [400 Bad Request] 居然是因为这

我的问题

早先写的feign接口,一直都是能正常调用的,突然就报错了,检查了期间的改动,确认没有直接涉及到feign相关接口的改动,没有涉及到feign相关配置的改动。

最后我的问题是怎么解决的

最后偶然的情况下,改另一个业务功能时,改动了一下腾讯IM的功能,后面一测试发现feign接口居然通了,万万没想到。

系统的基本情况:
共5个微服务
2个消费者;admin、web
3个服务提供者:user、order、live

说一下中间发生的几个事件:

  1. 9.14号之前 feign接口都是通的;
  2. 9.14号凌晨我在IM里面加了一个初始化官方账号的东南功能在这里插入图片描述
  3. 加了加了上述功能后发布重启,9.14号白天就看到feign接口调不通了
  4. 然后按照常规的方法搜了一些解决办法,都不适用
  5. 看了这段时间的git提交记录,没发现有啥feign相关的改动,就很纳闷
  6. 先不管这个问题,继续写业务功能代码,就改动了im里面的这个地方,初始化前增加了判断,项目共有5个微服组成,之前没加判断,所以5个服务都会去执行这个初始化操作,虽然业务上多次重复初始化也没影响,但是看着不安逸,就给加了个条件,改到了web服务区初始化,然后测试发现admin的feign可以调通了,但是后面又试了web服务,feign还是报哪个错。在这里插入图片描述
  7. 后面又把上面那个im的判断改到user服务里面去初始化,一试,admin、web都能成功调通feign接口了。
  8. 卧槽,大呼神奇,虽然我还没搞懂是什么原理,但确实是解决问题了。

im初始化功能是通过HTTP调用的腾讯的api接口。

最后如果有大佬知道原理的希望能交流指导一下。

feign调用突然就报错了,之前是好好的,没有改动过相关的代码或配置

开始用POST方式出错了
在这里插入图片描述
改成GET方式还是出错
在这里插入图片描述
该feign接口里面还包含有其他的接口方法

对外接口

在这里插入图片描述

feign接口

在这里插入图片描述

feign实现

在这里插入图片描述
springboot 3.3.0、springcloud 2023

截取的feign请求
在这里插入图片描述

中间其他常规排查省略…

### 回答1: "feign.FeignException$NotFound" 是一个 Java 编程语言中的异常类,通常在使用 Feign 客户端进行 HTTP 请求时出现。当 Feign 客户端尝试访问一个不存在的 URL 资源时,就会抛出这个异常。这种异常表示在服务器上找不到请求的资源,可能是因为 URL 地址不正确或请求的资源不存在。要解决这个问题,可以检查请求的 URL 是否正确,并确保所请求的资源确实存在于服务器上。 ### 回答2: Feign 是一个轻量级的 HTTP 客户端库,可以让我们通过简单的接口定义来模拟 RESTful 服务的接口调用,从而使得我们能够更加高效的编写客户端代码。当我们使用 Feign 进行接口调用时,有时候会遇到 `feign.FeignException$NotFound` 的错误。那么这个错误是什么原因引起的呢? `feign.FeignException$NotFound` 表示 Feign 调用远程服务时,服务返回了 404 错误,即资源没有找到。这种情况可以有以下常见原因: 1. 接口地址输入错误:可能是因为 URL 不正确,或者是因为接口已经改变了路径,需要确认接口地址是否正确。 2. 请求方式不正确:可能是因为客户端使用了不正确的 HTTP 请求方式,服务端不支持当前请求方式。 3. 接口逻辑不正确:可能是因为服务端没有根据接口规范实现接口逻辑,导致客户端调用时产生错误。 4. 非法参数:可能是因为将非法的参数传递给了服务端,导致服务端无法处理请求。 为了解决 `feign.FeignException$NotFound` 的错误,我们需要根据具体的情况进行排查。可以通过查看日志、调试代码、查看接口文档等方式来找到错误的原因,最终根据具体情况进行修复。需要注意的是,当服务端返回 404 错误时,我们需要优雅的处理这种错误结果,而不是简单的抛出异常,否则会影响系统的稳定性。 ### 回答3: Feign是一个优秀的Java HTTP客户端框架。在进行Feign调用时,有时候可能会遇到FeignException$NotFound异常。这种异常通常表示发起的请求并没有在服务器上找到对应的资源或接口。 出现这种异常的原因有很多种。有可能是因为请求的URL路径错误,或者服务器端已经将该接口删除。也可能是因为请求的参数有误,或者是请求头缺失导致服务器无法识别该请求。另外,还有一种可能是服务器端出现了异常导致资源无法被正确地获取。 如果我们需要排查这种异常,通常需要先检查请求参数和请求头是否正确并完整,并且要确保请求的URL路径是否与服务器端的路径一致。如果以上检查都正确,那么我们需要查看服务器端接口实现是否正确、是否能够正常调用。此外,还需要检查服务器端的日志,以查看是否存在其他的异常信息。 在我们排查完各种可能情况后,如果问题还未得到解决,那么我们可以考虑与服务器端的开发人员进行联系,通过进行沟通来解决这个问题。 总之,当我们遇到这种异常时,我们需要通过仔细地检查请求参数、请求头和服务器端的实现等方面来解决这个问题,从而保障接口调用的正确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值