跳過到頁腳內容
.NET幫助

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

在C#開發中,整合強大的程式庫可以顯著提高輸出和容量。 兩個協作效果良好的程式庫是Flurl和IronPDF,分別為程式設計師提供創建PDF和與線上API交互的強大工具。

Flurl提供流暢且具表達力的語法,使在C#中處理HTTP請求、API及其API端點變得更簡單。 發送HTTP請求、回應它們,以及管理查詢參數或標頭僅是它簡化的幾個任務。 開發者可以使用Flurl快速有效地管理身份驗證、序列化和反序列化JSON,以及消費Web API,並撰寫易讀且組織良好的代碼。

開發者可以利用Flurl的易用性和多功能性,結合IronPDF,透過連接Web API、檢索數據,並將其輕鬆整合至IronPDF中以創建詳細且準備好的PDF文件。 透過此整合,程式設計師可以設計複雜的應用程序,這些應用程序透過使用從線上服務檢索的實時數據自動創建文件,提高生產力和用戶體驗。

在本介紹中,我們將探索如何在C#程式中使用和結合Flurl與IronPDF,強調其在現代、當代軟體開發中的優勢和協同潛力。

什麼是Flurl C#?

Flurl是一個強大且易於使用的C#程式庫,用於管理HTTP請求和與線上API的通信。它提供流暢、可鏈式的語法,提高代碼可讀性和可維護性,並降低與RESTful API交互的複雜性。開發者可以輕鬆創建和提交HTTP請求,以易於理解的方式處理回應,並管理查詢參數、標頭和有效內容。

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

流暢接口

Flurl提供的流暢、可鏈式語法增強了程式的可讀性和可維護性。 開發者可以創建簡單而具表達力的HTTP請求,並與URL、查詢參數、標頭和有效內容交互。

HTTP方法支持

支持所有標準的HTTP方法,包括GET、POST、PUT、DELETE、PATCH、HEAD和OPTIONS。 這種包羅萬象的支持方法使得開發者能夠在使用Web API時完成各種任務。

查詢參數處理

Flurl提供簡單的方法以修改、添加和刪除URL內的查詢參數。 它使得根據用戶輸入或運行時情況創建動態URL變得更容易。

JSON支持

Flurl原生支持JSON數據處理。 它能輕鬆將JSON回應反序列化為C#物件,並將物件序列化為JSON以作請求有效內容。 因此,使用基於JSON的API變得簡單而容易。

表單數據和多部分支持

它使管理多部分請求和表單數據變得更容易。 Flurl使開發者能輕鬆在HTTP請求中包含多部分/表單數據有效內容或表單編碼數據。

錯誤處理和重試策略

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

身份驗證

它支持多種流行的Web API身份驗證方法,包括OAuth、客製身份驗證方案、基本身份驗證和API金鑰。 這確保了與需要身份驗證的API進行安全通信。

測試支持

透過將HTTP相關邏輯隔離到具有明顯關注點分離的可重用組件中,Flurl鼓勵可測試性。 這使得為API交互編寫單元測試更容易,因為不需要真實的網路呼叫來測試它們。

配置靈活性

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

可擴展性

因其插件框架,Flurl非常可擴展。 開發者可以透過構建獨特的擴充功能或整合第三方插件來增加平台的功能。

Create and configure Flurl C#

以下是用於在C#項目中構建和配置Flurl的步驟:

創建新的Visual Studio項目

使用Visual Studio創建控制台項目很簡單。 要在Visual Studio環境中啟動控制台應用程序,請按照以下簡單步驟操作:

在嘗試使用Visual Studio之前,請確保您已經安裝在電腦上。

開始一個新專案

選擇文件、項目,然後選擇新的選項。

Flurl C# (How It Works For Developers): Figure 1 - Click on New option

可以從以下項目模板引用列表中選擇"Console App"或"Console App (.NET Core)"模板。

請填寫"Name"表單為您的項目命名。

Flurl C# (How It Works For Developers): Figure 2 - Provide a name and a location

選擇一個位置保存項目。

單擊"創建"將打開控制臺應用專案。

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

安裝Flurl.Http套件

第一步是使用NuGet套件管理控制台或Visual Studio中的NuGet套件管理器安裝Flurl.Http套件。

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");
$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}");
}
$vbLabelText   $csharpLabel

Flurl C# (How It Works For Developers): Figure 4 - example console output

處理回應

為了根據預定格式(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}");
$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使將網頁、URL和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");
    }
}
$vbLabelText   $csharpLabel

Flurl C# (How It Works For Developers): Figure 5 - IronPDF: The C# PDF Library

IronPDF的功能

由HTML生成PDF

將JavaScript、HTML和CSS轉換為PDF。 它支持媒體查詢和響應式設計,這是兩種當代Web標準。 它對於使用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; }
}
$vbLabelText   $csharpLabel

在此例中,使用Flurl的.GetJsonAsync()功能發送GET請求並獲取JSON數據。 用您的模型類替換User,該類代表API回應結構,用"URL"替換為您實際的API端點。 HTML模板(ChromePdfRenderer類渲染為PDF文件。 此處,從API檢索的標題和主體數據被用來動態構建HTML模板。 創建的PDF文件(pdfDocument)被保存到文件系統的指定位置("document.pdf")。 根據需要更改路徑。

Flurl C# (How It Works For Developers): Figure 6 - Example Console output

為在數據獲取或PDF生成過程中遇到的問題(如網路故障Exception)提供強大的錯誤處理方法。 您可以使用IronPDF更改頁面大小、邊距、頁眉、頁腳和其他PDF設置。 如需更高級的自訂可能性,請參閱IronPDF的功能手冊。 當發送HTTP查詢到API時,請確保敏感數據和訪問令牌被安全處理。 使用您的API要求的正確身份驗證方法。

結論

總之,在C#應用程序中結合IronPDF進行PDF生成與Flurl進行API交互,為動態檢索數據和生成高質量PDF文件提供了一種強大的組合。 使用其流暢的API,Flurl程式庫簡化了HTTP請求,並在從遠程端點檢索數據時提供了靈活性和易用性。 此外,IronPDF便於將HTML材料輕鬆轉換為PDF格式,提供可調整的功能,如頁眉、邊距和頁面大小。

在實施此整合時,同時考慮速度優化、數據安全和錯誤處理也是很重要的。 通過遵循最佳實踐並利用Flurl和IronPDF的優勢,開發者可以創建出可靠且可擴展的解決方案,以滿足當代應用程式的需求。

IronPDF和Iron Software的Suite通過結合Iron Software高靈活系統和套件及其核心支持,提供更多的線上應用程式及功能,使開發更有效。

如果授權選項對於項目的需求清晰而具體,開發人員便更能確定哪種模式是理想的和最佳實踐。這些優勢讓開發人員能夠以清晰、有說服力和輕鬆整合的方式處理各種問題。

常見問題解答

我如何使用 Flurl 從 C# 中的 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。

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

Flurl 通過提供一個簡單的界面來處理各種 HTTP 方法、身份驗證和錯誤管理,從而提高了處理 HTTP 請求時的生產力和代碼清晰度,非常適合現代 API 驅動的應用程序。

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

IronPDF 支持媒體查詢和響應式設計,確保 HTML 內容在結果 PDF 中精確表示,無論最初設計時的設備或屏幕尺寸如何。

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

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me