.NET6之MiniAPI(二十二):HttpClient
生活随笔
收集整理的這篇文章主要介紹了
.NET6之MiniAPI(二十二):HttpClient
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說明:本篇不是說明HttpClient怎么使用,而以分享在asp.net core mini api框架下,HttpClient的引入和使用方式。
我們在業務開發中,免不了調用三方的服務,這時就會用到HttpClient,在早期的asp.net core框架中,一般是通過new HttpClient來實現對三方的請求,現在,可以通過HttPClientFactory來實現,這樣的好處是可以池化連接,節省資源。
基礎使用方法很簡單:
當項目中有多個三方服務請求,為了區分各個三方服務,可以采用命名方式
var builder = WebApplication.CreateBuilder(args);builder.Services.AddHttpClient("Google", httpClient => {httpClient.BaseAddress = new Uri("https://www.google.com/"); }); builder.Services.AddHttpClient("BaiDu", httpClient => {httpClient.BaseAddress = new Uri("https://www.baidu.com/"); }); var app = builder.Build();app.MapGet("/testgoogle", async (IHttpClientFactory clientFactory) =>{var?googleClient?=?clientFactory.CreateClient("Google");return?await?googleCclient.GetStringAsync("search?q=桂素偉");}); app.MapGet("/testbaidu", async (IHttpClientFactory clientFactory) => {var?baiduClient?=?clientFactory.CreateClient("BaiDu");return?await?lient?.GetStringAsync("s?wd=桂素偉"); }); app.Run();還可以項目中每個服務的請求各自封裝,各用各的HttpClient:
var builder = WebApplication.CreateBuilder(args);builder.Services.AddHttpClient<IGoogleService, GoogleService>(); builder.Services.AddHttpClient<IBaiDuService, BaiDuService>(httpClient => {httpClient.BaseAddress = new Uri("https://www.baidu.com/"); });var app = builder.Build();app.MapGet("/testgoogle", async (IGoogleService google) =>{return await google.GetContentAsync();}); app.MapGet("/testbaidu", async (IBaiDuService baidu) => {return await baidu.GetContentAsync(); }); app.Run();interface IGoogleService {Task<string> GetContentAsync(); } class GoogleService : IGoogleService {private readonly HttpClient _httpClient;public GoogleService(HttpClient httpClient){_httpClient = httpClient;_httpClient.BaseAddress = new Uri("https://www.google.com/");}public async Task<string> GetContentAsync(){return await _httpClient.GetStringAsync("search?q=桂素偉");} } interface IBaiDuService {Task<string> GetContentAsync(); } class BaiDuService : IBaiDuService {private readonly HttpClient _httpClient;public BaiDuService(HttpClient httpClient){_httpClient = httpClient;}public async Task<string> GetContentAsync(){return await _httpClient.GetStringAsync("s?wd=桂素偉");} }總結
以上是生活随笔為你收集整理的.NET6之MiniAPI(二十二):HttpClient的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Avalonia跨平台入门第十五篇之Li
- 下一篇: ASP.NET Core(十)Confi