91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HttpClient怎么在.NET Core中使用

發布時間:2021-03-26 16:12:29 來源:億速云 閱讀:142 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關HttpClient怎么在.NET Core中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

一、直接使用方式

不管是哪種方式,都要先注冊服務,對于 ASP.NET Core 應用則是在 Startup.cs 文件的 ConfigureServices 添加如果代碼:

services.AddHttpClient();

然后在 Controller 中通過構造注入的試獲得 IHttpClientFactory,然后通過它來創建 HttpClient 對象。示例代碼:

public class ValuesController : BaseController
{
 private readonly IHttpClientFactory _httpClientFactory;
 public ValuesController(IHttpClientFactory httpClientFactory)
 {
  _httpClientFactory = httpClientFactory;
 }

 [HttpGet]
 public async Task<ActionResult> Get()
 {
  var client = _httpClientFactory.CreateClient();
  client.BaseAddress = new Uri("http://api.github.com");
  string result = await client.GetStringAsync("/");
  return Ok(result);
 }
}

這種使用方式適合一次性的 HTTP 請求調用,弊端是如果多次都要請求 github 的接口,那就得寫很多重復代碼配置 HttpClient。

二、命名式使用方式

命名式的使用方式可以解決第一種方式的問題,對于特定域名的 HTTP 調用,可以只做一次配置,然后在多個地方通過名稱拿到相同的 Client 來使用。

首先在 Startup.cs 注冊服務的地方添加帶有特定名稱的 HttpClient 服務,并添加需要的配置,如下示例:

services.AddHttpClient();
services.AddHttpClient("github", c =>
{
 c.BaseAddress = new Uri("https://api.github.com/");
 c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
 c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
});

注意這里添加了兩次 AddHttpClient,一次是沒有命名的,一次是有命名的。在 Controller 中的使用方式是:

public class ValuesController : BaseController
{
 private readonly IHttpClientFactory _httpClientFactory;

 public ValuesController(IHttpClientFactory httpClientFactory)
 {
  _httpClientFactory = httpClientFactory;
 }

 [HttpGet]
 public async Task<ActionResult> Get()
 {
  var client = _httpClientFactory.CreateClient("github");
  string result = await client.GetStringAsync("/");
  return Ok(result);
 }
}

但如果使用很頻繁,這種獲取 Client 的方式還是有一點麻煩。下面介紹第三種方式,可以在使用的時候方便一點,但配置要麻煩些。

三、類型化使用方式

類型化的使用方式可以預先把配置放到自定義的 HttpClient 中,然后在需要的地方都過依賴注入直接拿到 HttpClient 實例。

我們來看具體的例子,首先自定義一個 HttClient 類,比如訪問 github 接口的類可以這樣定義:

public class GitHubClient
{
 public HttpClient Client { get; private set; }

 public GitHubClient(HttpClient httpClient)
 {
  httpClient.BaseAddress = new Uri("https://api.github.com/");
  httpClient.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
  httpClient.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
  Client = httpClient;
 }

 public async Task<string> GetData()
 {
  return await _client.GetStringAsync("/");
 }
}

這里的 GetData 就是額外擴展的共用方法。使用前需要為這個類注冊服務:

services.AddHttpClient<GitHubClient>();

然后在需要的地方(比如 Controller)中這樣使用:

public class ValuesController : BaseController
{
 private readonly GitHubClient _gitHubClient;;

 public ValuesController(GitHubClient gitHubClient)
 {
  _gitHubClient = gitHubClient;
 }

 [HttpGet]
 public async Task<ActionResult> Get()
 {
  string result = await _gitHubClient.GetData();
  return Ok(result);
 }
}

類型化的方式和命名式的方式相比,雖然在配置的時候會麻煩一點,但它有兩個好處:一是不用通過名稱字符串來獲得 Client,而是直接通過依賴注入獲得具體的 Client;二是可以在自定義的 HttpClient 類中擴展共用的方法。

看完上述內容,你們對HttpClient怎么在.NET Core中使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平谷区| 波密县| 牙克石市| 长岭县| 峡江县| 铜陵市| 扬州市| 浮山县| 大姚县| 临湘市| 宁国市| 荥阳市| 满城县| 全南县| 电白县| 深州市| 禹州市| 江安县| 独山县| 合作市| 大余县| 福州市| 锡林浩特市| 余姚市| 桐庐县| 克东县| 专栏| 禄丰县| 鹤峰县| 慈溪市| 财经| 山阳县| 湖南省| 莱西市| 手机| 新宁县| 高雄市| 天全县| 北辰区| 永兴县| 乐至县|