.NET超簡單輕量級的HTTP請求組件Flurl

来源:https://www.cnblogs.com/xbhp/archive/2023/09/22/17722046.html
-Advertisement-
Play Games

簡介 Flurl是一個用於構建基於HTTP請求的C#代碼的庫。它的主要目的是簡化和優雅地處理網路請求(只用很少的代碼完成請求)。Flurl提供了一種簡單的方法來構建GET、POST、PUT等類型的請求,以及處理響應和異常。它還提供了一些高級功能,如鏈式調用、緩存請求結果、自動重定向等。本文將介紹Fl ...


簡介

Flurl是一個用於構建基於HTTP請求的C#代碼的庫。它的主要目的是簡化和優雅地處理網路請求(只用很少的代碼完成請求)。Flurl提供了一種簡單的方法來構建GET、POST、PUT等類型的請求,以及處理響應和異常。它還提供了一些高級功能,如鏈式調用、緩存請求結果、自動重定向等。本文將介紹Flurl的GET、POST請求功能和序列化功能。

使用流程

1、創建一個APS.NET API站點,作為Flurl的請求源

在API里分別新建控制器,在控制器中建get、post兩個方法。部分方法代碼如下

 [HttpGet]
 public IEnumerable<string> Get()
 {
    return new string[] { "歡迎關註公眾號", "DotNET開發跳槽" };
  }
//這是一個post請求,Test是一個類,分別包含了Id和name兩個欄位
[HttpPost("Posttest")]
 public string Posttest( Test value)
 {
     return value.Name;
 }

2、新建一個控制台程式,作為Flurl請求的平臺

首先用nuget安裝Flurl,如果在vs里可以使用nuget安裝,需要安裝安裝Flurl和Flurl.Http兩個包。命令如下:

install-package Flurl;
install-package Flurl.Http;

然後新建兩個方法,一個用於請求get,一個用於post。代碼如下:

    public async Task<string> Get() {
            string url = "http://localhost:5232/api/Test";
            var response =await  url.GetAsync();
            string result = await response.GetStringAsync();
            return result;
     }
     public async Task<string> Post()
     {
        string url = "http://localhost:5232/api/Test/Posttest";
        var test = new  { Id = 1, Name = "關註公眾號dotnet開發跳槽" };
        var response = await url.PostJsonAsync(test);//將對象序列化為json 並傳參數
        string result = await response.GetStringAsync(); 
        return result;
     }
  }

從上面代碼可以看出,get使用Flurl就兩行代碼返回值,而post加上請求參數也才三行代碼。是不是很簡潔。但是註意的是使用post傳json的時候千萬別序列化對象,因為它已經幫你序列化為JSON字元串了。

上面的例子效果分別如下:

圖片

圖片

Flurl還自帶序列化和反序列化功能。demo代碼如下:

var json = await url.GetJsonAsync();
//將JSON反序列化為對象
 var products = json.DeserializeJson<List<Product>>();
 //將對象序列化為json 並傳參數
var response = await url.PostJsonAsync(test);

簡單吧,只需要幾行代碼解決序列化問題,省去了引用或者安裝json包了。

上面只列出了Flurl的部分功能,其它功能請參考官網:

https://flurl.dev

結語

本文講述了Flurl的GET、POST請求功能和序列化功能,適合初學者閱讀和學習,實際項目使用需要根據情況參考官網使用。Flurl 適用於需要執行HTTP請求的.NET應用程式。它可以用於構建 RESTful API 客戶端、Web 爬蟲、數據抓取工具等。希望本文對你的項目有所收穫,同時歡迎留言或者吐槽本文。

推薦閱讀

1、在.NET Core使用 HttpClient 的正確方式

2、.NET幾種HTTP請求組件你用過幾種?

來源公眾號:DotNet開發跳槽 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 發現Java 21的StringBuilder和StringBuffer中多了repeat方法: /** * @throws IllegalArgumentException {@inheritDoc} * * @since 21 */ @Override public StringBuilder ...
  • 線程(thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際 運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線 程並行執行不同的任務。 ...
  • 背景介紹 1,最近有一個大數據量插入的操作入庫的業務場景,需要先做一些其他修改操作,然後在執行插入操作,由於插入數據可能會很多,用到多線程去拆分數據並行處理來提高響應時間,如果有一個線程執行失敗,則全部回滾。 2,在spring中可以使用@Transactional註解去控制事務,使出現異常時會進行 ...
  • 在`Windows`操作系統中,每個進程的虛擬地址空間都被劃分為若幹記憶體塊,每個記憶體塊都具有一些屬性,如記憶體大小、保護模式、類型等。這些屬性可以通過`VirtualQueryEx`函數查詢得到。該函數可用於查詢進程虛擬地址空間中的記憶體信息的函數。它的作用類似於`Windows`操作系統中的`Task... ...
  • 大家好,我是沙漠盡頭的狼。 本方首發於Dotnet9,介紹使用dnSpy調試第三方.NET庫源碼,行文目錄: 安裝dnSpy 編寫示常式序 調試示常式序 調試.NET庫原生方法 總結 1. 安裝dnSpy dnSpy是一款功能強大的.NET程式反編譯工具,可以對.NET程式進行反編譯,代替庫文檔的功 ...
  • 框架目標 什麼是框架,框架能做到什麼? 把一個方向的技術研發做封裝,具備通用性,讓使用框架的開發者用起來很輕鬆。 屬性: 通用性 健壯性 穩定性 擴展性 高性能 組件化 跨平臺 從零開始-搭建框架 建立項目 主鍵查詢功能開發 綁定實體 一步一步的給大家推導: 一邊寫一邊測試 從零開始--搭建框架 1 ...
  • 剛開始寫文章,封裝Base基類的時候,添加了trycatch異常塊,不過當時沒有去記錄日誌,直接return了。有小伙伴勸我不要吃了Exception 其實沒有啦,項目剛開始,我覺得先做好整體結構比較好。像是蓋樓一樣。先把樓體建造出來,然後再一步一步的美化完善。 基礎的倉儲模式已經ok,Autofa ...
  • 一:背景 1. 講故事 最近也挺奇怪,看到了兩起 CPU 爆高的案例,且誘因也是一致的,覺得有一些代表性,合併分享出來幫助大家來避坑吧,閑話不多說,直接上 windbg 分析。 二:WinDbg 分析 1. CPU 真的爆高嗎 這裡要提醒一下,別人說爆高不一定真的就是爆高,我們一定要拿數據說話,可以 ...
一周排行
    -Advertisement-
    Play Games
  • 一個自定義WPF窗體的解決方案,借鑒了呂毅老師的WPF製作高性能的透明背景的異形視窗一文,併在此基礎上增加了滑鼠穿透的功能。可以使得透明窗體的滑鼠事件穿透到下層,在下層窗體中響應。 ...
  • 在C#中使用RabbitMQ做個簡單的發送郵件小項目 前言 好久沒有做項目了,這次做一個發送郵件的小項目。發郵件是一個比較耗時的操作,之前在我的個人博客裡面回覆評論和友鏈申請是會通過發送郵件來通知對方的,不過當時只是簡單的進行了非同步操作。 那麼這次來使用RabbitMQ去統一發送郵件,我的想法是通過 ...
  • 當你使用Edge等瀏覽器或系統軟體播放媒體時,Windows控制中心就會出現相應的媒體信息以及控制播放的功能,如圖。 SMTC (SystemMediaTransportControls) 是一個Windows App SDK (舊為UWP) 中提供的一個API,用於與系統媒體交互。接入SMTC的好 ...
  • 最近在微軟商店,官方上架了新款Win11風格的WPF版UI框架【WPF Gallery Preview 1.0.0.0】,這款應用引入了前沿的Fluent Design UI設計,為用戶帶來全新的視覺體驗。 ...
  • 1.簡單使用實例 1.1 添加log4net.dll的引用。 在NuGet程式包中搜索log4net並添加,此次我所用版本為2.0.17。如下圖: 1.2 添加配置文件 右鍵項目,添加新建項,搜索選擇應用程式配置文件,命名為log4net.config,步驟如下圖: 1.2.1 log4net.co ...
  • 之前也分享過 Swashbuckle.AspNetCore 的使用,不過版本比較老了,本次演示用的示例版本為 .net core 8.0,從安裝使用開始,到根據命名空間分組顯示,十分的有用 ...
  • 在 Visual Studio 中,至少可以創建三種不同類型的類庫: 類庫(.NET Framework) 類庫(.NET 標準) 類庫 (.NET Core) 雖然第一種是我們多年來一直在使用的,但一直感到困惑的一個主要問題是何時使用 .NET Standard 和 .NET Core 類庫類型。 ...
  • WPF的按鈕提供了Template模板,可以通過修改Template模板中的內容對按鈕的樣式進行自定義。結合資源字典,可以將自定義資源在xaml視窗、自定義控制項或者整個App當中調用 ...
  • 實現了一個支持長短按得按鈕組件,單擊可以觸發Click事件,長按可以觸發LongPressed事件,長按鬆開時觸發LongClick事件。還可以和自定義外觀相結合,實現自定義的按鈕外形。 ...
  • 一、WTM是什麼 WalkingTec.Mvvm框架(簡稱WTM)最早開發與2013年,基於Asp.net MVC3 和 最早的Entity Framework, 當初主要是為瞭解決公司內部開發效率低,代碼風格不統一的問題。2017年9月,將代碼移植到了.Net Core上,併進行了深度優化和重構, ...