您一定得見識一下.Net中這幾款HTTP請求庫

如果是以前,想要用。net 發起一個Http請求真的非常複雜,需要寫好幾十行程式碼才行,現在好了,開源社群裡面有幾款不錯的HTTP請求元件,這裡我推你進來看看,這裡的Demo我們就請求一個免費的API介面吧,我們先看看介面返回的資料

您一定得見識一下.Net中這幾款HTTP請求庫

然後建立一個該json適配的類,你也可以用VS裡面自帶的將JSON貼上為類的功能,直接把根據json格式生成一個類,然後自己再稍加調整一下即可,這裡我建立了兩個類分別為ResultResponse和Result。

publicclassResultResponse { publicint code { get; set; } publicstring message { get; set; } public Result[] result { get; set; } } publicclassResult { publicstring sid { get; set; } publicstring text { get; set; } publicstring type { get; set; } publicstring thumbnail { get; set; } publicstring video { get; set; } publicobject images { get; set; } publicstring up { get; set; } publicstring down { get; set; } publicstring forward { get; set; } publicstring comment { get; set; } publicstring uid { get; set; } publicstring name { get; set; } publicstring header { get; set; } publicstring top_comments_content { get; set; } publicstring top_comments_voiceuri { get; set; } publicstring top_comments_uid { get; set; } publicstring top_comments_name { get; set; } publicstring top_comments_header { get; set; } publicstring passtime { get; set; } }

因為我這個類是自動生成的,所以命名風格有點怪,這裡就先忽略,但是實際應用中一定要注意這個問題。好了下面開始實踐各個請求庫了

refit

您一定得見識一下.Net中這幾款HTTP請求庫

直接透過Nuget即可安裝

您一定得見識一下.Net中這幾款HTTP請求庫

這裡我們新建一個名為IWebApi的介面:

publicinterfaceIWebApi { [Get(“/getJoke?page={page}&count={count}&type={video}”)] Task GetJoke(int page,int count,string video); }

這裡的Get是refit的特性之一,裡面的字串即為請求路徑和引數

現在,我們就去呼叫這個介面

[HttpGet(“joke”)] publicasync Task GetJoke() { var webApi = RestService。For(“https://api。apiopen。top/”); returnawait webApi。GetJoke(1,10, “video”); }

就這樣簡單的使用就可以獲取我們介面的資訊了

您一定得見識一下.Net中這幾款HTTP請求庫

refit為我們提供了很多特性,如果在請求時需要加Header,那麼可以使用Headers這個特性。

EasyHttp

這個開源庫已經很久沒有更新了

您一定得見識一下.Net中這幾款HTTP請求庫

由於我演示是用的。net core 3。1,EasyHttp不支援Core,所以這裡就不演示了,我就在Github搬一些案例過來吧

var http = new HttpClient(); http。Request。Accept = HttpContentTypes。ApplicationJson; var response = http。Get(“url”); var customer = response。DynamicBody;

如果是。net framework是的同學,可以使用一下。

RestSharp

這個庫的熱度還是畢竟高,已經達到了7。5k star

您一定得見識一下.Net中這幾款HTTP請求庫

這裡我們就先省略Nuget安裝,直接到示例編碼

[HttpGet(“joke”)] publicasync Task GetJoke() { var client = new RestClient(“https://api。apiopen。top”); var request = new RestRequest(“/getJoke?page=1&count=2&type=video”, Method。GET); IRestResponse rest= await client。ExecuteAsync(request); return rest。Content; }

這裡只是一個簡單的呼叫,它也提供了比較全面的工具方法,各位可以去官網瞭解一下

Flurl。Http

這個開源類庫使用起來也是非常方便的,它擴充套件了字串方法,在Nuget中安裝Flurl。Http

您一定得見識一下.Net中這幾款HTTP請求庫

然後一句程式碼即可發起HTTP請求並序列化成物件

[HttpGet(“joke”)] publicasync Task GetJoke() { returnawait“https://api。apiopen。top/getJoke?page=1&count=2&type=video”。GetJsonAsync(); }

好了,這裡只是簡單的分享4款開源的http請求元件,使用的示例也是非常簡單,並沒有對這幾個元件進行對比分析,你們在使用之前請先自行實踐對比,進行最優選擇。

頂部