问题标签 [openfeign]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1670 浏览

java - Feign 无法解析名称

我正在尝试使用 Spring Cloud 的 Open Feign 调用另一个服务,但这是我不断得到的响应:

这是我的代码:

我将 Feign 配置为使用 OkHttp 客户端,但我不确定它是否对错误负责:

0 投票
1 回答
5604 浏览

spring-boot - 假装下载文件

我正在尝试找到一种简单的方法来使用 Feign 下载 csv 文件(保留文件名)。

什么是最简单和最干净的方法?

feign-form github 页面上的多部分解决方案很冗长,对我不起作用。

任何帮助表示赞赏。

0 投票
4 回答
3633 浏览

spring-cloud - FeignClient 无法解析 Eureka 服务名称

我正在使用spring-cloud-starter-openfeign客户端编写一个 Eureka 客户端应用程序。这是我的POM

如您所见,我使用的是 spring boot 版本2.2.4.RELEASE spring-cloud.versionHoxton.SR1

这是我的应用程序类:

直到这里我的客户端应用程序在 Eureka 服务上成功注册,我也可以在 Eureka 页面上看到我的应用程序。

现在我已经编写了一个接口来调用另一个服务,该服务也在 Eureka 上注册,

我正在从我的一个控制器中调用此方法。但 Feign 没有将服务名称解析为它的 URL。尝试进行 http 调用

http://ANOTHER-SERVICE/anotherservice/api/resource/test

而不是打电话

http://192.168.1.1:8080/anotherservice/api/resource/test

并获得超时异常(这很明显)。下面是堆栈跟踪

EDIT1:下面是我的 application.properties

0 投票
1 回答
716 浏览

spring-cloud - 如何向库中定义的 Spring Cloud OpenFeign 客户端添加特定配置?

我使用了一个,它使用 spring-cloud-openfeign 定义了一些 OpenFeign 客户端。我需要向这些客户端添加一个拦截器,以在不更改库代码的情况下添加授权标头。

到目前为止,我只是将拦截器定义为 Spring bean,一切正常。但是现在我添加了另一个需要不同拦截器的 OpenFeign 客户端,我使用注释的configuration属性定义了它。@FeignClient我的问题是新客户端现在获得了两个拦截器。

我尝试使用应用程序属性配置第一个拦截器,但拦截器需要注入另一个 bean,这似乎需要将其定义为 bean,这将再次将其添加到第二个客户端。

我还尝试找到与 CDI@Typed注释等效的内容,以便仅在查找它的具体类时才能找到拦截器,而在查找RequestInterceptor接口时却找不到,但找不到任何接口。

有什么方法可以将配置添加到库中定义的 OpenFeign 客户端,这样它就不会影响任何其他客户端?

0 投票
1 回答
4005 浏览

java - Spring Boot OpenFeign: java.lang.IllegalStateException: Method has too many Body parameters

下面的示例演示了使用 OpenFeign 时遇到的问题。当您的响应对象具有太多字段时,问题变得很明显,这会引发错误:Method has too many parameters。示例 1 完美运行,但示例 2 失败。

示例 1 使用 HTTP.POST 和示例 2 中使用的相同响应对象,后者使用 HTTP.GET。

为什么 OpenFeign 会限制 HTTP.GET 方法中的字段,并抛出异常?我不能使用 HTTP.POST 来获取/获取/读取资源。糟糕的 REST API 设计标准。

使用相同的响应对象,对于 HTTP.POST(有效),HTTP.GET 失败

堆栈跟踪:

我浏览了 OpenFeign 文档,它支持上述实现。如果我找不到这个问题的解决方案,我将不得不求助于解决方法和使用HTTP.POST@RequestBody根据 Rest-API 设计标准,这不是一个理想的解决方案。

0 投票
1 回答
324 浏览

spring-boot - 如何使用内部 RestController 和 FeignClient 配置 Spring Sidecar

我有一个微服务场景,其中 Sidecar(spring boot 应用程序)映射了 python 网络服务器的端点。

python服务器监听5000并执行计算,所以我们决定在URI中用“calc”前缀映射它的主页,所以我们有以下配置:

然后,我在 Sidecar 微服务内部引入了一个新的 REST 控制器,即:

最后,我编写了一个 FeignClient,它应该允许我从其他微服务调用微服务的端点,如下所示:

我调用 FeignClient 得到的是,以“/git”开头的 URI 被重定向到 localhost:/5000 而不是 localhost:/2323,并带有以下日志:

正如我们在第一条日志行中看到的,主机是“localhost:5000”。我想要做的是对“/git/**”的调用不会重定向到 python,而是由 RestController 提供服务。

我怎样才能得到它?谢谢!

0 投票
1 回答
3043 浏览

java - OpenFeign 客户端不应用“Content-Type”标头值:415 作为响应

我想使用 feign 执行 DELETE:

来自 ConsumersClient 接口的方法:

当我这样做时:

我得到了

由于消息是:““不支持内容类型”,我假设 Feign 没有将 Content-Type 值应用于其标题。

请注意:通过 Postman 的相同请求返回 200 并具有相同的参数。因此,该服务按预期工作。

Logback 说标题包括:

请帮助找出我的代码有什么问题。

0 投票
0 回答
257 浏览

spring - 请求返回错误时未接收正文 - Spring Boot Feign Client

技术:

  • 一个带有 Spring Boot 2.1.7 的模块(starter web,openfeign)

  • 带有 Spring Boot 2.1.3 的 API 网关

我想从 feign 客户端捕获错误以再次发送我的错误消息。但是当我调试响应时,它在身体上什么也没有显示。但是,当我尝试在Postman响应中重现相同的调用时,身体会随之而来。

我想知道如何获取在 Postman 上传输的消息的变量以及为什么我的请求没有带来相同的正文响应。

来自feign客户端的日志跟踪

在此处输入图像描述

邮递员请求

在此处输入图像描述

0 投票
0 回答
1190 浏览

java - spring boot feign客户端集成测试配置

美好的一天,我正在尝试编写 Feign 特定的集成测试并具有特定的配置以启用 feign 自动配置,看起来像这样

在我的测试中(Spock 规范)

MyService正在使用RestClient

可悲的是,出现了运行测试规范异常

解决该问题的方法是添加@EnableFeignClients@SpringBootApplication,但这样会与另一个测试(在我的情况下为 DataJpa 切片测试)混淆,为了避免它,我需要添加这行代码

如此处所述https://github.com/spring-projects/spring-boot/issues/7270用于每个集成测试,不使用 FeignAutoConfiguration 我真的不想这样做......

0 投票
2 回答
7798 浏览

spring-boot - Feign 用 body 获取请求

出于某种原因,我需要调用 GET 方法 API 并为其传递 json 请求正文。我真的找不到它的例子。我想知道它是否甚至支持使用 feign。我怎样才能使用 feign 做到这一点?