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