gpt4 book ai didi

java - Spring Cloud Feign 拦截器

转载 作者:行者123 更新时间:2023-12-02 08:41:35 26 4
gpt4 key购买 nike

我创建了一个 ClientHttpRequestInterceptor,用于拦截所有传出的 RestTemplate 请求和响应。我想将拦截器添加到所有传出的 Feign 请求/响应中。有办法做到这一点吗?

我知道有一个 feign.RequestInterceptor 但这样我只能拦截请求而不能拦截响应。

我在Github上找到了一个类FeignConfiguration,它可以添加拦截器,但我不知道它是哪个maven依赖版本。

最佳答案

如何在 Spring Cloud OpenFeign 中拦截响应的实际示例。

  1. 通过扩展 Client.Default 创建自定义 Client,如下所示:
public class CustomFeignClient extends Client.Default {


public CustomFeignClient(SSLSocketFactory sslContextFactory, HostnameVerifier hostnameVerifier) {
super(sslContextFactory, hostnameVerifier);
}

@Override
public Response execute(Request request, Request.Options options) throws IOException {

Response response = super.execute(request, options);
InputStream bodyStream = response.body().asInputStream();

String responseBody = StreamUtils.copyToString(bodyStream, StandardCharsets.UTF_8);

//TODO do whatever you want with the responseBody - parse and modify it

return response.toBuilder().body(responseBody, StandardCharsets.UTF_8).build();
}
}
  • 然后在配置类中使用自定义 Client:
  • public class FeignClientConfig {


    public FeignClientConfig() { }

    @Bean
    public Client client() {
    return new CustomFeignClient(null, null);
    }

    }
  • 最后,在 FeignClient 中使用配置类:
  • @FeignClient(name = "api-client", url = "${api.base-url}", configuration = FeignClientConfig.class)
    public interface ApiClient {

    }

    祝你好运

    关于java - Spring Cloud Feign 拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31722478/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com