国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.net Core 使用IHttpClientFactory請求實現(xiàn)

2024-07-10 12:49:43
字體:
供稿:網(wǎng)友

     導(dǎo)讀:本文已添加在 晨曦微服務(wù)之旅 ,現(xiàn)在自己在嘗試微服務(wù)架構(gòu),一邊學(xué)邊做項目快速的進入狀態(tài)。當然在學(xué)習(xí)的過程中會將自己學(xué)到的知識進行分享。

一、為什么不用HttpClient

        1.HttPClient使用完之后不會立即關(guān)閉開啟網(wǎng)絡(luò)連接時會占用底層socket資源,但在HttpClient調(diào)用其本身的Dispose方法時,并不能立刻釋放該資源

2.如果頻繁的使用HttpClient,頻繁的打開鏈接,關(guān)閉鏈接消耗就會很大。

二、解決方案

        1.我們可以延長HttpClient的生命周期,比如對其建一個靜態(tài)的對象

private static HttpClient Client = new HttpClient();

2.或者使用單例模式,至于你使用哪一種單例模式就看你自己了,這里就不細將了。因為這樣感覺起來不是很舒服

三、HttpClientFactory

        1.在.NET Core 2.1版本之后引入的 HttpClientFactory解決了HttpClient的所有痛點。有了 HttpClientFactory,我們不需要關(guān)心如何創(chuàng)建HttpClient,又如何釋放它。通過它可以創(chuàng)建具有特定業(yè)務(wù)的HttpClient,而且可以很友好的和 DI 容器結(jié)合使用,更為靈活。

2.HttpClientFactory 創(chuàng)建的HttpClient,也即是HttpClientHandler,只是這些個HttpClient被放到了“池子”中,工廠每次在create的時候會自動判斷是新建還是復(fù)用。(默認生命周期為2min,默認的生命周期可以修改)

  //修改默認的生命周期  services.AddHttpClient() .SetHandlerLifetime(TimeSpan.FromMinutes(5));

四、HttpClientFactory的使用

一、第一種使用方式

在Startup.cs中進行注冊

 //注冊http請求服務(wù) services.AddHttpClient();

2.Httphelper請求輔助類中使用

/// <summary>    /// 注入http請求    /// </summary>    private readonly IHttpClientFactory httpClientFactory;    public HttpHelp(IHttpClientFactory _httpClientFactory)    {      httpClientFactory = _httpClientFactory;    }    // <summary>    // Get請求數(shù)據(jù)    // <para>最終以url參數(shù)的方式提交</para>    // </summary>    // <param name="parameters">參數(shù)字典,可為空</param>    // <param name="requestUri">例如/api/Files/UploadFile</param>    // <returns></returns>    public async Task<string> Get(Dictionary<string, string> parameters, string requestUri, string token)    {      //從工廠獲取請求對象      var client = httpClientFactory.CreateClient();      //添加請求頭      if (!string.IsNullOrWhiteSpace(token))      {        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);      }      client.DefaultRequestHeaders.Add("Content-Type", "application/json; charset=utf-8");      //拼接地址      if (parameters != null)      {        var strParam = string.Join("&", parameters.Select(o => o.Key + "=" + o.Value));        requestUri = string.Concat(requestUri, '?', strParam);      }      client.BaseAddress = new Uri(requestUri);      return client.GetStringAsync(requestUri).Result;    }            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 桐梓县| 和政县| 贡山| 平昌县| 阜新| 习水县| 宝坻区| 易门县| 定襄县| 阆中市| 英吉沙县| 禄丰县| 诸暨市| 含山县| 张掖市| 肇庆市| 威海市| 刚察县| 惠水县| 清丰县| 阿克| 石狮市| 岐山县| 都兰县| 台湾省| 谢通门县| 渭源县| 观塘区| 莎车县| 晴隆县| 望都县| 三都| 确山县| 通化市| 临泽县| 新疆| 汪清县| 平罗县| 霍城县| 铜梁县| 体育|