如何在 .NET 中使用 Flurl 高效處理Http請求
簡介
官方介紹,F(xiàn)lurl是一個現(xiàn)代的,流利的,支持異步的,可測試的,可移植的,URL增強和Http客戶端組件。
Url構(gòu)建
現(xiàn)在有一個登錄的接口,地址如下:
https://www.some-api.com/login?name=Lee&pwd=123456
我們在處理這個地址的時候,會拼接 login,然后拼接?號,然后拼接參數(shù),中間還要拼接& 得到最終的地址。
使用 Flurl 構(gòu)建,首先需要通過 Nuget 安裝 Flurl 組件。
var url = "http://www.some-api.com" .AppendPathSegment("login") .SetQueryParams(new { name = "Lee", pwd = "123456" });
這很簡單,這是最簡單的Get請求,同樣的我們也可以使用 Uri 的擴(kuò)展方法
var url = new Uri("http://www.some-api.com").AppendPathSegment(...
Http 增強
Flurl 是模塊化的,所以還需要安裝 Flurl.Http
using Flurl; using Flurl.Http; var result = await "http://www.some-api.com".AppendPathSegment("login").GetAsync();
上面的代碼會發(fā)送一個GET請求,并返回一個IFlurlResponse,可以得到 StatusCode,Headers等,也可以通過 GetStringAsync 和 GetJsonAsync 得到響應(yīng)內(nèi)容。
如果只是想獲取響應(yīng)內(nèi)容,我們看看 Flurl 有多簡單:
T poco = await "http://api.foo.com".GetJsonAsync<T>(); string text = await "http://site.com/readme.txt".GetStringAsync(); byte[] bytes = await "http://site.com/image.jpg".GetBytesAsync(); Stream stream = await "http://site.com/music.mp3".GetStreamAsync();
Post提交
await "http://api.foo.com".PostJsonAsync(new { a = 1, b = 2 });
動態(tài)類型 dynamic
dynamic d = await "http://api.foo.com".GetJsonAsync();
設(shè)置請求標(biāo)頭:
await url.WithHeader("Accept", "text/plain").GetJsonAsync(); await url.WithHeaders(new { Accept = "text/plain", User_Agent = "Flurl" }).GetJsonAsync();
基礎(chǔ)身份驗證
await url.WithBasicAuth("username", "password").GetJsonAsync();
OAuth 2.0
await url.WithOAuthBearerToken("mytoken").GetJsonAsync();
表單提交
await "http://site.com/login".PostUrlEncodedAsync(new { user = "user", pass = "pass" });
HttpClient 管理
我們通常不會創(chuàng)建太多的 HttpClient, 過多的連接會耗盡服務(wù)器資源,通常會拋出 SocketException 異常,大部分還是使用 HttpClientFactory。
在 Flurl 庫中,它是內(nèi)部管理 HttpClient實例, 通常一個主機Host,會創(chuàng)建一個HttpClient,然后緩存來復(fù)用。
Flurl 也很好的支持了IOC容器,你也可以在依賴注入中使用它。
總結(jié)
Flurl 組件讓Http操作變得更簡單易用,你可以在項目中嘗試使用它,其他的還有一些功能,可測試可配置等,你都可以在官網(wǎng)找到它的文檔
以上就是如何在 .NET 中使用 Flurl 高效處理Http請求的詳細(xì)內(nèi)容,更多關(guān)于.NET 中使用 Flurl 處理Http請求的資料請關(guān)注腳本之家其它相關(guān)文章!
- ASP.NET Core擴(kuò)展庫之Http通用擴(kuò)展庫的使用詳解
- ASP.NET Core擴(kuò)展庫之Http日志的使用詳解
- 如何在ASP.NET Core中使用HttpClientFactory
- 在ASP.NET Core中用HttpClient發(fā)送POST, PUT和DELETE請求
- 在ASP.NET Core中應(yīng)用HttpClient獲取數(shù)據(jù)和內(nèi)容
- 在ASP.NET Core5.0中訪問HttpContext的方法步驟
- .NET CORE HttpClient的使用方法
- ASP.NET Core中的Http緩存使用
- .net Core 使用IHttpClientFactory請求實現(xiàn)
- .NET Core使用HttpClient進(jìn)行表單提交時遇到的問題
- .Net Core下HTTP請求IHttpClientFactory示例詳解
相關(guān)文章
ASP.NET oledb連接Access數(shù)據(jù)庫的方法
這篇文章主要介紹了ASP.NET oledb連接Access數(shù)據(jù)庫的方法,需要的朋友可以參考下2015-01-01asp.net導(dǎo)出excel數(shù)據(jù)的常見方法匯總
這篇文章主要介紹了asp.net導(dǎo)出excel數(shù)據(jù)的常見方法,實例匯總了數(shù)據(jù)導(dǎo)出的常見的方法以及相關(guān)的注意事項,是非常實用的技巧,需要的朋友可以參考下2014-10-10ASP.NET Session的七點認(rèn)識小結(jié)
ASP.NET Session的使用當(dāng)中我們會遇到很多的問題,那么這里我們來談下經(jīng)常出現(xiàn)的一些常用ASP.NET Session的理解2011-07-07asp.net中使用自定義控件的方式實現(xiàn)一個分頁控件的代碼
在web開發(fā)中,常常需要顯示一些數(shù)據(jù),而為了方便排版及瀏覽,我們只需要顯示所有記錄中的一部分。一般情況下,我們采用分頁來實現(xiàn)這個需求2012-10-10MVC HtmlHelper擴(kuò)展類(PagingHelper)實現(xiàn)分頁功能
這篇文章主要為大家詳細(xì)介紹了MVC HtmlHelper擴(kuò)展,實現(xiàn)分頁功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05VS2005打開VS2008項目的2種方法(vs2005怎么打開2008)
vs2008支持.net3.5,而vs2005支持.net2.0,所以使用vs2005打開vs2008的項目,要確定你的項目是.net2.0的,下面介紹二種VS2005打開VS2008項目的方法2014-01-01Asp.net MVC利用knockoutjs實現(xiàn)登陸并記錄用戶的內(nèi)外網(wǎng)IP及所在城市(推薦)
這篇文章主要介紹了 Asp.net MVC利用knockoutjs實現(xiàn)登陸并記錄用戶的內(nèi)外網(wǎng)IP及所在城市(推薦),需要的朋友可以參考下2017-02-02