如何在 .net 中使用 flurl 高效處理http請求
簡介
官方介紹,flurl是一個現(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 的擴展方法
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請求的詳細內(nèi)容,更多關(guān)于.net 中使用 flurl 處理http請求的資料請關(guān)注碩編程其它相關(guān)文章!