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

首頁 > 編程 > .NET > 正文

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

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

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

一、為什么不用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.或者使用單例模式,至于你使用哪一種單例模式就看你自己了,這里就不細(xì)將了。因?yàn)檫@樣感覺起來不是很舒服

三、HttpClientFactory

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

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

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

四、HttpClientFactory的使用

一、第一種使用方式

在Startup.cs中進(jìn)行注冊

 //注冊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ā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 砀山县| 钦州市| 西贡区| 玛纳斯县| 南溪县| 克什克腾旗| 湛江市| 长泰县| 泾阳县| 鹰潭市| 株洲市| 自治县| 三都| 安陆市| 苍梧县| 肇庆市| 浦北县| 昌都县| 阳原县| 阿巴嘎旗| 上思县| 榆树市| 察隅县| 江阴市| 肇州县| 陆良县| 武宁县| 荆州市| 泰兴市| 日喀则市| 普安县| 丰都县| 嵊州市| 南昌市| 亳州市| 新和县| 吉安市| 九江市| 乳源| 巴林右旗| 北安市|