如何在 .NET 中使用 Flurl 高效處理Http請(qǐng)求
簡(jiǎn)介
官方介紹,F(xiàn)lurl是一個(gè)現(xiàn)代的,流利的,支持異步的,可測(cè)試的,可移植的,URL增強(qiáng)和Http客戶(hù)端組件。
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)類(lè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容器,你也可以在依賴(lài)注入中使用它。
總結(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利用后臺(tái)實(shí)現(xiàn)直接生成html分頁(yè)的方法
這篇文章主要介紹了asp.net利用后臺(tái)實(shí)現(xiàn)直接生成html分頁(yè)的方法,比較簡(jiǎn)潔實(shí)用,需要的朋友可以參考下2014-08-08
asp.net 操作XML 按指定格式寫(xiě)入XML數(shù)據(jù) WriteXml
從SQL下載數(shù)據(jù)到本地為XML文件2009-07-07
asp.net SqlParameter如何根據(jù)條件有選擇的添加參數(shù)
有時(shí)候?qū)憇ql語(yǔ)句的時(shí)候會(huì)根據(jù)方法傳進(jìn)來(lái)的參數(shù)來(lái)判斷sql語(yǔ)句中where條件的參數(shù),下面有個(gè)示例,大家可以參考下2014-06-06
.net全局定時(shí)定期執(zhí)行某些操作在Global.asax中具體實(shí)現(xiàn)
全局定時(shí)定期執(zhí)行某些操作看起來(lái)是多么自動(dòng)化的一個(gè)問(wèn)題不過(guò)在.net的Global.asax文件中稍微配置即可實(shí)現(xiàn),詳細(xì)配置如下,感興趣的朋友可以參考下哈2013-04-04
獲取轉(zhuǎn)向地址的URL的源文件(可自定義REFER)
獲取轉(zhuǎn)向地址的URL的源文件(可自定義REFER)...2006-09-09
.NET集成DeveloperSharp實(shí)現(xiàn)高效分頁(yè)與無(wú)主鍵分頁(yè)
DeveloperSharp系列近期又被制造業(yè)ERP、民航飛行App、建筑BIM、電力掌上營(yíng)業(yè)廳、等多家大型采用,站在巨人的肩膀上你能走的更遠(yuǎn),這篇文章主要介紹了.NET集成DeveloperSharp實(shí)現(xiàn)高效分頁(yè)與無(wú)主鍵分頁(yè),需要的朋友可以參考下2024-06-06
asp.net request.PathInfo實(shí)現(xiàn)的url重寫(xiě)
最近對(duì)在開(kāi)始研究url重寫(xiě),對(duì)重寫(xiě)的原理以及重寫(xiě)之后引起的性能問(wèn)題是研究的重點(diǎn),研究過(guò)程中發(fā)現(xiàn)了一種輕便的“url重寫(xiě)方案”2009-04-04
Asp.Net服務(wù)器發(fā)送HTTP標(biāo)頭后無(wú)法設(shè)置內(nèi)容類(lèi)型的問(wèn)題解決
這篇文章主要給大家介紹了Asp.Net服務(wù)器發(fā)送HTTP標(biāo)頭后無(wú)法設(shè)置內(nèi)容類(lèi)型問(wèn)題的解決方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05

