Feign:如何在帖子的响应中提取标题值?



我有以下问题,我试图解决使用Feign:

  1. 我做一个POST调用到一个服务。
  2. 然后我需要从响应头(关联id)中提取一个值,我需要保存在数据库中。

我发现这样做的唯一方法是通过返回一个feign.Response对象指定在这里:如何读取头值从伪响应

所以我实现了下面的客户端(在Kotlin中),调用这个客户端的服务可以从返回的feign.Response中提取报头值。我宁愿不把feign.Response转回主叫业务,但我看不出别的办法。

@FeignClient(
name = "doSomething",
url = "${doSomething.baseUrl}",
configuration = [DoSomethingClientConfiguration::class]
)
interface DoSomethingClient {
@PostMapping(value = ["/create-something"], consumes = [APPLICATION_JSON_VALUE])
fun createSomething(thingToCreate: ThingToCreate) : feign.Response
}

由于createSomething(...方法现在返回feign.Response,在我的DoSomethingClientConfiguration中定义的默认ErrorDecoderRetryer.Default被绕过,feign.Response(在此特定情况下是404)被返回到调用服务来处理它,这是不可取的。

<<p>解决方案/strong>我正在寻找的是一种更智能的方式来返回feign.Response标头值,而不必返回feign.Response本身,这导致它绕过默认行为。

任何想法?

您可以实现自己的解码器和"Response"从spring-cloud-starter- openfeforeign org.springframework.http.ResponseEntity

当方法返回伪值时未调用伪值检索器。响应

最新更新