当前位置: 首页 > news >正文

feign 使用时可能的问题

1、请求地址不对

此时调用的时候会报 404。这个时候就要检查下是不是接口定义的地址和其实现的地址是否一致,这个应该是比较好排查的

2、content-type 问题

https://github.com/OpenFeign/feign/issues/1723

可以参照这个问题,其也会报 404

3、服务找不到

当我们使用 name 或者 value 来指定我们的服务名的时候,可能会报服务找不到的问题。这个时候可以通过指定 url 的方式,如果指定 url 依然不行,那么说明目标服务不存在。

@FeignClient(
        value = "my-service-server",
        url = "http://my-service-server",
        path = "/xxx",
        contextId = "xxx")

当 value 和 url 都存在时,优先使用 url

4、循环调用

A -> B -> A。
就是 A 服务调用 B 服务的接口,在 B 服务中再调用 A 服务的接口。这个时候如果 B -> A 的时候出现 404,可能是因为请求头设置有问题。可以通过增加日志来定位

feign:
  client:
    config:
      default:
        loggerLevel: full
logging:
  level:
    com.client.*: debug  // 服务端提供的接口的路径

在配置中增加这个配置,就可以打印出 feign 调用时的请求参数以及请求头。
当获取到 feign 调用的请求头和请求参数之后,可以尝试使用 curl 的方式去请求接口,带上 feign 调用时的请求头和请求参数,看看是否也是 404。如果是的,这个时候可以通过调整请求头和请求参数来消除 404。这个时候你就可以知道到底是请求头不对还是请求参数不对。

针对请求头不对的场景,可能是由于 RequestInterceptor 这个接口导致的。
在使用 feign 的时候,我们有时候可能会自定义 RequestInterceptor 来在 feign 调用的时候设置一些参数,比如请求头,这可能就是导致 404 的主要原因。
在 RequestInterceptor 定义的时候切记不要将其注册到 spring 容器中(比如增加 @Configuration 注解),这样会导致当前这个RequestInterceptor 会作用于所有的 feignClient 上。 如果你想要在 feignClient 上使用 RequestInterceptor ,可以通过 FeignClient 这个注解的 configuration 来指定。

@FeignClient(
        value = "my-service-server",
        url = "http://my-service-server",
        path = "/xxx",
        contextId = "xxx",
        configuration = {xxx.class})

我遇到的场景是,有一个全局的 RequestInterceptor ,其会进行请求头的复制。就是在 A -> B -> A 的场景下,当 B -> A 的时候,其会将 A -> B 的请求头复制过来,作为 B -> A 的请求头。在这些请求头中,有一个比较特殊的请求头 Host。Host 表示的是目标服务的地址,

相关文章:

  • 国内智能外呼系统市场概况及技术发展趋势
  • [250411] Meta 发布 Llama 4 系列 AI 模型 | Rust 1.86 引入重大语言特性
  • mysql相关面试题
  • Ubuntu虚拟机连不上网
  • 华为华三模拟器解决兼容问题Win11 24H2 现在使用ENSP的问题解决了
  • webrtc pacer模块(一) 平滑处理的实现
  • PySide6 监测设备变更事件
  • 智慧能源管理平台:驱动电网数字化转型,引领绿色能源新时代
  • HTML应用指南:利用GET请求获取全国汉堡王门店位置信息
  • 算法思想之前缀和(二)
  • 操作系统 4.3-生磁盘的使用
  • 种田游戏的综合尝试
  • IBM Rational Software Architect安装感受及使用初体验
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(2):んです
  • 【ESP32S3】GATT Server service table传送数据到调试助手
  • 2025.04.05 广东汕尾两日游记
  • DNS正反向解析复习,DNS主从服务,转发服务及DNS和nginx联合案例(不断更新)
  • BERT-DDP
  • Google ADK(Agent Development Kit)简要示例说明
  • 凌科加密芯片LKT4304在充电桩上的应用
  • 南昌官网seo/seo基础入门免费教程
  • 不用备案的网站哪里买/排名seo公司
  • 外国做网站的平台/怎么做好销售
  • 网站开发类/精准客户数据采集软件
  • sql做网站后台/磁力屋 最好用
  • 花色直播怎么看/网站排名优化方案