cto*_*tor 6 c# dotnet-httpclient
我们使用HttpClient. 我正在创建一个HttpClient用于所有这些 API 调用的通用对象。我对实现这一点的两种方法感到困惑:
HttpClient通过在get/post/put方法中传递 API URI,为每个调用创建一个单例类并使用它。HttpClientHandler将在所有HttpClients之间共享的单例类,并HtppClient通过设置BaseAddress属性为每个域创建一个。现在我们可以通过在get/post/put方法中传递相对路径来调用 API 。哪一种是更好的方法?
预设有什么好处BaseAddress吗?如果没有,为什么提供这个属性?
如果您选择选项 1,当然BaseAddress不应该使用,因为您会不断覆盖它,并且必须避免两个线程在其中一个线程有机会发送其请求之前更新它。
如果您选择选项 2,则可以对HttpClient每个 API 配置一次(例如,从配置文件中读取)BaseAddress。Timeout然后可以提供相对 uri,而无需为每个请求添加基地址。
Timeout我想哪个更好取决于您是否希望能够为MaxResponseContentBufferSize所有 API(选项 1)或每个 API(选项 2)配置属性,我没有明确的“这个更好”的答案。