跳至頁尾內容
.NET幫助

Flurl C# (對開發者如何運作)

在C#開發中,整合強大的程式庫可以顯著提高產出和容量。 兩個相得益彰的程式庫是Flurl和IronPDF,它們分別為程式設計師提供了強大工具來建立PDF和與線上API互動。

Flurl提供了一種流暢、表達力強的語法,使得在C#中處理HTTP請求、API及其API端點更加容易。 發送HTTP請求、響應及管理查詢參數或標頭只是它簡化的幾個任務。 開發者可以使用Flurl快速高效地管理身份驗證、序列化和反序列化JSON,以及消費網路API——同時撰寫可讀性和組織良好的程式碼。

開發者可以利用Flurl的易用性和多功能性,結合IronPDF,通過與網路API連接、檢索資料,輕鬆將其整合到IronPDF中來建立詳細且準備充分的PDF文件。 通過這種整合,程式設計師可以設計複雜的應用程式,通過自動化利用從線上服務獲取的實時資料建立文件,以提高生產力和使用者體驗。

在這個介紹中,我們將看看如何在C#程式中使用和結合Flurl和IronPDF,強調它們在現代程式開發中的優勢及協作潛力。

什麼是Flurl C#?

Flurl是一個強大且易於使用的C#程式庫,用於管理HTTP請求和與線上API通訊。它提供了一種流暢、可連結的語法,提高了程式碼可讀性和可維護性,並簡化了與RESTful API的互動。開發者可以輕鬆地建立和提交HTTP請求,以易於理解的方式處理響應,並管理查詢參數、標頭和有效負載。

Flurl最顯著的特徵之一在於其動態構建URL的能力,這使得根據運行時情況來建立和更改URL變得簡單,也可以作為一個獨立的URL建構器使用。 它提供了強大的支持來管理JSON資料的序列化和反序列化,並支持流行的HTTP功能,如GET、POST、PUT、DELETE等。此外,Flurl具有內建的功能來管理表單資料和查詢參數,這使其適合於各種API整合場景。

Fluent Interface

Flurl提供的流暢的、可連結的語法增強了程式的可讀性和可維護性。 開發者可以建立簡單而富有表達力的HTTP請求,並處理URLs、查詢參數、標頭和有效負載。

HTTP Method Support

支持所有標準的HTTP方法,包括GET、POST、PUT、DELETE、PATCH、HEAD和OPTIONS。 由於這種全面的支持方法,使得開發者在工作於網路API時可以完成各種任務。

Query Parameter Handling

Flurl提供了輕鬆的方法來修改、新增和刪除URL中的查詢參數。 這使得根據使用者輸入或運行時情況建立動態URL變得更加容易。

JSON Support

Flurl原生支持JSON資料處理。 它可以輕鬆地將JSON響應反序列化為C#物件,並將物件序列化為JSON以供請求有效負載使用。 由於這一點,使用基於JSON的API變得簡單而容易。

Form Data and Multipart Support

它使得管理multipart請求和表單資料變得更加容易。 Flurl使開發者可以輕鬆地在HTTP請求中包含multipart/form-data有效負載或表單編碼資料。

Error Handling and Retry Policies

Flurl提供所有HTTP調用的重試策略定義和錯誤處理功能。 通過定義唯一的錯誤處理邏輯或重試技術,開發者可以增強API調用和交互的彈性和可靠性。 這也保護並幫助開發者預防響應中的匿名物件錯誤。

Authentication

它支持多種流行的Web API身份驗證方法,包括OAuth、自定義身份驗證方案、Basic Authentication和API金鑰。 這確保了與需要身份驗證的API之間的安全通訊。

Testing Support

通過將HTTP相關邏輯隔離到可重用的組件中,配合明確的關注點分離,Flurl鼓勵了可測試性。 這使得編寫API交互的單元測試變得簡單,無需進行實際的網路呼叫來測試它們。

Configuration Flexibility

它為HTTP客戶端和請求參數提供配置靈活性。 開發者可以更改客戶端行為、超時、錯誤響應量、標頭和其他設置,以滿足特定應用程式或API限制的需求。

可擴展性

由於其插件框架,Flurl非常易於擴展。 開發者可以通過構建獨特的擴展或整合第三方插件以獲得更多功能來提高平台的功能。

Create and configure Flurl C

以下是為C#專案構建和配置Flurl的步驟:

建立新的Visual Studio專案

使用Visual Studio建立控制台專案很容易。 要在Visual Studio環境中啟動控制應用程式,請按照以下簡單步驟操作:

在嘗試使用前,請確保您的電腦上安裝了Visual Studio。

開始一個新項目

選擇"檔案"、"專案",然後選擇"新建"選項。

⟨IMG⟩Flurl C#(如何為開發者工作): 圖1 - 單擊新建選項⟨/IMG⟩

可以從下面的專案範本參考列表中選擇"控制台應用程式"或"控制台應用程式(.NET Core)"範本。

請填寫"名稱"表單以命名您的專案。

⟨IMG⟩Flurl C#(如何為開發者工作): 圖2 - 提供名稱和位置⟨/IMG⟩

選擇一個地方來保存專案。

點擊"建立"將打開控制台應用程式專案。

Flurl C# (How It Works For Developers): Figure 3 - Click Create

安裝Flurl.Http包

首先安裝Flurl.Http包,使用NuGet包管理器控制台或Visual Studio中的NuGet包管理器

Install-Package Flurl.Http

建立FlurlClient配置

Flurl提供FlurlClient類別,使您可以設置使用URL構建器的每個HTTP請求的預設參數。 這個可選但有用的步驟可以通過設置基本URL或預設標頭來完成。

using Flurl;
using Flurl.Http;

// Configure a FlurlClient instance with base URL and headers
FlurlClient flurlClient = new FlurlClient("https://api.example.com/");
flurlClient.WithHeader("Authorization", "Bearer YourAccessTokenHere");
using Flurl;
using Flurl.Http;

// Configure a FlurlClient instance with base URL and headers
FlurlClient flurlClient = new FlurlClient("https://api.example.com/");
flurlClient.WithHeader("Authorization", "Bearer YourAccessTokenHere");
Imports Flurl
Imports Flurl.Http

' Configure a FlurlClient instance with base URL and headers
Private flurlClient As New FlurlClient("https://api.example.com/")
flurlClient.WithHeader("Authorization", "Bearer YourAccessTokenHere")
$vbLabelText   $csharpLabel

發送HTTP請求

您現在可以使用Flurl的流暢URL發送HTTP請求。

var response = await "http://localhost:5013/users".GetAsync();
Console.WriteLine(response.ToString());

if (response.ResponseMessage.IsSuccessStatusCode)
{
    var result = await response.ResponseMessage.Content.ReadAsStringAsync();
    Console.WriteLine(result);
}
else
{
    Console.WriteLine($"Error: {response.StatusCode}");
}
var response = await "http://localhost:5013/users".GetAsync();
Console.WriteLine(response.ToString());

if (response.ResponseMessage.IsSuccessStatusCode)
{
    var result = await response.ResponseMessage.Content.ReadAsStringAsync();
    Console.WriteLine(result);
}
else
{
    Console.WriteLine($"Error: {response.StatusCode}");
}
Dim response = await "http://localhost:5013/users".GetAsync()
Console.WriteLine(response.ToString())

If response.ResponseMessage.IsSuccessStatusCode Then
	Dim result = Await response.ResponseMessage.Content.ReadAsStringAsync()
	Console.WriteLine(result)
Else
	Console.WriteLine($"Error: {response.StatusCode}")
End If
$vbLabelText   $csharpLabel

⟨IMG⟩Flurl C# (How It Works For Developers): 圖4 - 範例控制台輸出⟨/IMG⟩

處理響應

為了根據預期格式(如JSON、字串等)管理響應內容,Flurl的HttpResponseMessageExtensions提供了擴展方法,如ReceiveJson和ReceiveString。

// Handling JSON response
var responseObject = await "https://api.example.com/resource"
    .WithClient(flurlClient)
    .GetJsonAsync<ResponseType>();
// Assuming ResponseType is a class representing the expected JSON structure
Console.WriteLine($"Response: {responseObject.Property}");
// Handling JSON response
var responseObject = await "https://api.example.com/resource"
    .WithClient(flurlClient)
    .GetJsonAsync<ResponseType>();
// Assuming ResponseType is a class representing the expected JSON structure
Console.WriteLine($"Response: {responseObject.Property}");
Imports System
Imports Flurl.Http

' Handling JSON response
Dim responseObject As ResponseType = Await "https://api.example.com/resource" _
    .WithClient(flurlClient) _
    .GetJsonAsync(Of ResponseType)()
' Assuming ResponseType is a class representing the expected JSON structure
Console.WriteLine($"Response: {responseObject.Property}")
$vbLabelText   $csharpLabel

額外配置

  • 查詢參數: 要新增查詢參數,請使用.SetQueryParams()方法。 確保每個請求都使用相同的HttpClient實例運行,以提高效率。

  • 超時: 例如,您可以使用.WithTimeout(TimeSpan.FromSeconds(30))設置超時。

  • 錯誤處理: 要處理特定的錯誤情況,請使用.OnError()

入門

當需要從遠程API檢索資料並使用該資料建立PDF文件時,將Flurl與IronPDF整合到C#專案中是很有幫助的。 要開始使用Flurl和IronPDF,請按照以下步驟進行:

什麼是IronPDF

一個功能豐富的.NET程式庫IronPDF可在C#程式中使用來建立、閱讀和修改PDF文件。 借助此工具,開發者可以快速從HTML、CSS和JavaScript內容生成可列印的高質量PDF。 一些基本功能包括給能水印、製作頁眉和頁腳、拆分和合併PDF以及將HTML轉換為PDF的能力。 IronPDF 支持.NET Framework 和.NET Core,使其適用於多種應用程式。

由於PDF易於整合且有豐富的詳細文件,開發者可以輕鬆地將其應用在其應用程式中。 IronPDF通過高效處理複雜的佈局和樣式確保生成的PDF與源HTML內容緊密相似。

IronPDF使轉換網頁、URLs和HTML為看起來與原始內容完全相同的高質量PDF變得非常簡單。 這非常適合用來建立在線報告、發票等的PDF。 如果您一直在尋找將HTML轉換為PDF的方法,那麼IronPDF可以滿足您的需求!

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

⟨IMG⟩Flurl C#(如何為開發者工作):圖5 - IronPDF:C# PDF程式庫⟨/IMG⟩

IronPDF的功能

從HTML生成PDF

將JavaScript、HTML和CSS轉換為PDF。 它支持媒體查詢和響應式設計,這是兩個現代網路標準。 此功能適用於使用HTML和CSS動態裝飾PDF報告、發票和文件。

PDF編輯

可以將文字、照片和其他內容新增到現有PDF中。 可以從PDF文件中刪除文字和圖片。 多個PDF可以合併到一個文件中。PDF文件可以分成多個不同文件。 可以包含水印、註釋、頁眉和頁腳。

PDF轉換

將幾種文件型別,包括Word、Excel和圖片文件,轉換為PDF格式。 PDF轉換為影像(PNG、JPEG等)。

性能和可靠性

高效能和可靠性是在工業設定中有望的設計特性,因為它們可以有效地管理大量文件集合。

安裝IronPDF

要獲取在.NET專案中工作的PDF工具,請安裝IronPDF包。

Install-Package IronPdf

使用Flurl獲取資料生成PDF

使用Flurl的流暢API發送HTTP查詢並從您的API獲取資料。 這是檢索JSON資料的一個實例:

using Flurl;
using Flurl.Http;
using IronPdf;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        try
        {
            var response = await "http://localhost:5013/users/1".GetJsonAsync<User>();
            var id = response?.Id;
            var name = response?.Name;
            Console.WriteLine($"Data fetched successfully: {name}");

            // Generate PDF using IronPDF
            var renderer = new ChromePdfRenderer();
            string htmlTemplate = $@"
                <html>
                <body>
                    <h1>{id}</h1>
                    <p>{name}</p>
                </body>
                </html>";

            // Generate PDF document from HTML template
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate);

            // Save or stream the PDF document
            pdfDocument.SaveAs(@"document.pdf");
            Console.WriteLine("PDF document generated successfully.");
        }
        catch (FlurlHttpException ex)
        {
            Console.WriteLine($"HTTP Error: {ex.Message}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

// Example model class for JSON deserialization
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}
using Flurl;
using Flurl.Http;
using IronPdf;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        try
        {
            var response = await "http://localhost:5013/users/1".GetJsonAsync<User>();
            var id = response?.Id;
            var name = response?.Name;
            Console.WriteLine($"Data fetched successfully: {name}");

            // Generate PDF using IronPDF
            var renderer = new ChromePdfRenderer();
            string htmlTemplate = $@"
                <html>
                <body>
                    <h1>{id}</h1>
                    <p>{name}</p>
                </body>
                </html>";

            // Generate PDF document from HTML template
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate);

            // Save or stream the PDF document
            pdfDocument.SaveAs(@"document.pdf");
            Console.WriteLine("PDF document generated successfully.");
        }
        catch (FlurlHttpException ex)
        {
            Console.WriteLine($"HTTP Error: {ex.Message}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

// Example model class for JSON deserialization
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Imports Flurl
Imports Flurl.Http
Imports IronPdf
Imports System
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Try
			Dim response = await "http://localhost:5013/users/1".GetJsonAsync(Of User)()
			Dim id = response?.Id
			Dim name = response?.Name
			Console.WriteLine($"Data fetched successfully: {name}")

			' Generate PDF using IronPDF
			Dim renderer = New ChromePdfRenderer()
			Dim htmlTemplate As String = $"
                <html>
                <body>
                    <h1>{id}</h1>
                    <p>{name}</p>
                </body>
                </html>"

			' Generate PDF document from HTML template
			Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate)

			' Save or stream the PDF document
			pdfDocument.SaveAs("document.pdf")
			Console.WriteLine("PDF document generated successfully.")
		Catch ex As FlurlHttpException
			Console.WriteLine($"HTTP Error: {ex.Message}")
		Catch ex As Exception
			Console.WriteLine($"Error: {ex.Message}")
		End Try
	End Function
End Class

' Example model class for JSON deserialization
Public Class User
	Public Property Id() As Integer
	Public Property Name() As String
End Class
$vbLabelText   $csharpLabel

在此範例中,Flurl的.GetJsonAsync()函式用於發送GET請求並獲取JSON資料。 用您的模型類代替User,它代表API響應結構,並用您的實際API端點替換"URL"。 HTML模版(ChromePdfRenderer類轉換成PDF檔案。 在此處,從API檢索的標題和正文資料用於動態構建HTML模板。 所建立的PDF文件(pdfDocument)保存到文件系統中指定的位置("document.pdf")。 根據需要修改路徑。

⟨IMG⟩Flurl C#(如何為開發者工作):圖6 - 範例控制臺輸出⟨/IMG⟩

為資料提取或PDF生成期間的網路故障(Exception)提供強大的錯誤處理。 您可以使用IronPDF更改頁面大小、邊距、頁眉、頁腳和其他PDF設置。 有關更高級的自定義可能性,請參考IronPDF的唯美手冊。 在向API發送HTTP查詢時,請確保機密資料和存取令牌得到安全處理。 使用您的API所需的正確身份驗證方法。

結論

總之,將IronPDF用於PDF生成與Flurl用於API互動相結合於C#應用程式中,提供了一個強大的組合,可動態檢索資料並生成高質量的PDF文件。 Flurl程式庫具有流暢的API,簡化了HTTP請求,並在從遠程端點檢索資料時提供靈活性和友好性。 此外,IronPDF促進了HTML資料到PDF格式的輕鬆轉換,提供了可調整的功能,如頁眉、邊距和頁面大小。

在實施這種整合時,還需要考慮速度優化、資料安全性和錯誤處理問題。 通過遵循最佳實踐並利用Flurl和IronPDF的優勢,開發者可以建立可靠且可擴展的解決方案,以成功滿足現代應用程式的需求。

IronPDF和Iron Software's Suite提供了額外的線上應用程式和功能,通過結合Iron Software高度靈活的系統和套件以及其核心支持,提高了開發效率。

如果授權選擇對專案的需求清晰明確,開發者更容易確定哪種模式是理想且最佳的實踐。這些優點使開發者能夠以清晰、具吸引力且無縫整合的方式管理各種問題。

常見問題

我如何在C#中使用Flurl從API獲取資料?

Flurl提供了一個流暢的API來進行HTTP請求,讓您可以輕鬆地從API中獲取資料。您可以使用類似GetAsync的方法來檢索資料並直接在C#中處理響應。

使用Flurl的流暢語法在C#中的優勢是什麼?

Flurl的流暢語法通過允許開發者無縫連結方法調用來提高程式碼的可讀性和可維護性,簡化了構建和發送HTTP請求的過程。

Flurl如何在進行HTTP請求時處理身份驗證?

Flurl支援多種身份驗證方法,包括OAuth和API密鑰,允許您在HTTP請求中包含身份驗證憑證,實現安全的API交互。

Flurl如何簡化API請求中的錯誤處理?

Flurl提供了強大的錯誤處理功能和重試策略,允許開發者實施自定義的錯誤處理邏輯和重試機制,以確保其應用中的API交互的可靠性。

您如何在C#中將HTML轉換為PDF?

您可以使用IronPDF在C#中將HTML內容轉換為PDF。IronPDF支援將HTML、CSS和JavaScript轉換為高品質的PDF,並允許新增如頁眉、頁腳和水印等附加功能。

Flurl和PDF生成程式庫可以在C#應用程式中整合嗎?

是的,Flurl可以用於從API中檢索資料,然後使用像IronPDF這樣的程式庫將其處理並轉換為PDF文件。這種整合允許根據實時資料動態生成PDF。

在C#中使用Flurl進行HTTP請求的好處是什麼?

Flurl通過提供處理各種HTTP方法、身份驗證和錯誤管理的簡單介面,提高了生產力和程式碼清晰度,是現代API驅動應用程式的理想選擇。

PDF生成程式庫如何處理響應式設計?

IronPDF支援媒體查詢和響應式設計,確保HTML內容在生成的PDF中得到準確呈現,無論它最初設計的裝置或螢幕大小。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話