gpt4 book ai didi

.net-core - 如何在.net和.net core中使用HttpClient调用多个客户端api

转载 作者:行者123 更新时间:2023-12-05 04:08:02 27 4
gpt4 key购买 nike

在我的 .net 核心项目之一中,我必须调用 REST api 来向客户端发送一些数据。总是有超过 9-10 个客户端具有不同的 api,它们有自己的域和自定义 header 。如果我每次都创建 HttpClient 对象,它会影响性能,因为每次都会创建和关闭新的 TCP 连接。如果我将使用单例设计模式创建单个 HttpClient 对象,则每个客户端将使用相同的基本 url 和默认 header 。任何人都可以提出解决此问题的方法。每次新的客户端 api 需要集成时,我都不想去创建新的 HttpClient。

最佳答案

如果您要调用 9-10 个不同的 API,其中默认 header 等客户端级别的东西可能会派上用场,那么 9-10 个静态 HttpClient 实例是最佳选择。如果编码 9-10 个实例感觉有点困惑/重复,您可以将它们包装在字典对象中,特别是 ConcurrentDictionary。将有助于保持实例化惰性和线程安全。这样的事情应该有效:

public static class HttpClientManager
{
private static ConcurrentDictionary<string, HttpClient> _clients =
new ConcurrentDictionary<string, HttpClient>();

public static HttpClient Get(string baseUrl)
{
return _clients.GetOrAdd(baseUrl, _ =>
new HttpClient { BaseAddress = new Uri(baseUrl) });
}
}

然后它只是 HttpClientManager.Get(baseUrl) 每当你需要使用一个。

关于.net-core - 如何在.net和.net core中使用HttpClient调用多个客户端api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135175/

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