我有以下问题,我试图解决使用Feign:
- 我做一个POST调用到一个服务。
- 然后我需要从响应头(关联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
中定义的默认ErrorDecoder
和Retryer.Default
被绕过,feign.Response
(在此特定情况下是404
)被返回到调用服务来处理它,这是不可取的。
feign.Response
标头值,而不必返回feign.Response
本身,这导致它绕过默认行为。
任何想法?
您可以实现自己的解码器和"Response"从spring-cloud-starter- openfeforeign org.springframework.http.ResponseEntity
当方法返回伪值时未调用伪值检索器。响应