簡(jiǎn)介
官方介紹,F(xiàn)lurl是一個(gè)現(xiàn)代的,流利的,支持異步的,可測(cè)試的,可移植的,URL增強(qiáng)和Http客戶端組件。
Url構(gòu)建
現(xiàn)在有一個(gè)登錄的接口,地址如下:
1
|
https: //www.some-api.com/login?name=Lee&pwd=123456 |
我們?cè)谔幚磉@個(gè)地址的時(shí)候,會(huì)拼接 login,然后拼接?號(hào),然后拼接參數(shù),中間還要拼接& 得到最終的地址。
使用 Flurl 構(gòu)建,首先需要通過(guò) Nuget 安裝 Flurl 組件。
1
2
3
4
5
6
7
|
var url = "http://www.some-api.com" .AppendPathSegment( "login" ) .SetQueryParams( new { name = "Lee" , pwd = "123456" }); |
這很簡(jiǎn)單,這是最簡(jiǎn)單的Get請(qǐng)求,同樣的我們也可以使用 Uri 的擴(kuò)展方法
1
|
var url = new Uri( "http://www.some-api.com" ).AppendPathSegment(... |
Http 增強(qiáng)
Flurl 是模塊化的,所以還需要安裝 Flurl.Http
1
2
3
4
|
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)單:
1
2
3
4
|
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提交
1
|
await "http://api.foo.com" .PostJsonAsync( new { a = 1, b = 2 }); |
動(dòng)態(tài)類型 dynamic
1
|
dynamic d = await "http://api.foo.com" .GetJsonAsync(); |
設(shè)置請(qǐng)求標(biāo)頭:
1
2
3
|
await url.WithHeader( "Accept" , "text/plain" ).GetJsonAsync(); await url.WithHeaders( new { Accept = "text/plain" , User_Agent = "Flurl" }).GetJsonAsync(); |
基礎(chǔ)身份驗(yàn)證
1
|
await url.WithBasicAuth( "username" , "password" ).GetJsonAsync(); |
OAuth 2.0
1
|
await url.WithOAuthBearerToken( "mytoken" ).GetJsonAsync(); |
表單提交
1
2
3
4
|
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)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://www.cnblogs.com/myshowtime/p/14512563.html