微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Steeltoe DiscoveryHttpMessageHandler 和 FlurlClient

如何解决使用 Steeltoe DiscoveryHttpMessageHandler 和 FlurlClient

我希望将我们的 HttpClient 切换为使用 Flurl。但是,我们的 HttpClient 当前配置为通过 Steeltoe 使用服务发现。基本上它是在 ConfigureServices 中执行此操作的:

   services.AddHttpClient<IMyClass,MyClass>().AddHttpMessageHandler<discoveryHttpMessageHandler>();

discoveryHttpMessageHandler 是 Steeltoe 库 (https://github.com/SteeltoeOSS) 中的自定义 http 消息处理程序

如何使用 Flurl 访问 IHttpClientBuilder,以便添加相同的消息处理程序?或者 Flurl 是否有另一种干净的方法为创建的每个 HttpClient/FlurlClient 添加自定义消息处理程序?

解决方法

有几种方法可以使用 Flurl 添加自定义消息处理程序(例如使用自定义 factory),但由于您已经在使用 IHttpClientFactory,我认为最简单的方法是获得您想要的信息想要(也是我推荐的)是继续将 HttpClient 注入您的服务中,并在服务中使用 Flurl 将它们包装起来:

public class MyClass : IMyClass
{
    private readonly IFlurlClient _flurlClient;

    public MyService(HttpClient httpClient) {
        _flurlClient = new FlurlClient(httpClient);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。