.NET 幫助

Flurl C#(它如何為開發人員工作)

發佈 2024年8月13日
分享:

介紹

當涉及到 C# 開發時,融入強大的庫可以顯著提高產出和容量。 兩個配合良好的程式庫是 Flurl 和IronPDF,這些分別為程式設計師提供強大的工具來創建 PDF 和與在線 API 互動。

Flurl 提供了一種流暢而富有表達性的語法,使得在 C# 中處理 HTTP 請求、API 和其 API 端點更加容易。 發送 HTTP 請求、回應這些請求,並管理查詢參數或標頭只是它簡化的一些工作。 開發人員可以使用 Flurl 快速且有效地管理身份驗證、序列化和反序列化 JSON,以及消耗 Web API,同時撰寫易於閱讀且組織良好的代碼。

開發人員可以利用 Flurl 的易用性和多功能性,結合 IronPDF,藉由連接網頁 API、檢索數據,並輕鬆整合到 IronPDF 中,以創建詳細且準備好的 PDF 文檔。 透過此整合,程式設計師可以設計複雜的應用程式,透過自動化從線上服務檢索的即時資料來創建文件,以提升生產力和用戶體驗。

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

什麼是 Flurl C#?

Flurl 是一個強大且易於使用的 C# 函式庫,用於管理 HTTP 請求和與在線 API 通信。它提供了一種流暢、可鍊式的語法,改善了代碼的可讀性和可維護性,並降低與 RESTful API 交互的複雜性。開發人員可以輕鬆地創建和提交 HTTP 請求、以易於理解的方式處理回應,並且可以使用 Flurl 管理查詢參數、標頭和負載。

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 請求中包含 multipart/form-data 負載或表單編碼數據。

錯誤處理和重試策略

Flurl為所有HTTP呼叫提供重試策略定義及錯誤處理功能。 透過定義獨特的錯誤處理邏輯或重試技術,開發者可以提高 API 呼叫和互動的彈性和可靠性。 這也保護並幫助開發人員防止匿名對象在回應中引發錯誤。

身份驗證

它支持多種流行的網頁 API 驗證方法,包括 OAuth、自定義驗證方案、基本驗證和 API 密鑰。 這確保了與需要身份驗證的 API 之間的安全通信。

測試支援

透過將與 HTTP 有關的邏輯隔離到可重複使用的元件中,具有明確的關注點分離,Flurl 促進了可測試性。 這讓為 API 互動撰寫單元測試變得更簡單,因為不需要進行真正的網路呼叫來測試它們。

配置靈活性

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

可擴展性

由於其插件框架,Flurl 非常可擴展。 開發人員可以通過構建獨特的擴展或整合第三方插件來增加平台的功能。

創建和配置 Flurl C

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

建立一個新的 Visual Studio 專案

使用 Visual Studio 創建控制台專案很容易。 要在 Visual Studio 環境中啟動主控台應用程式,請遵循以下簡單步驟:

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

開始新專案

選擇「檔案」、「專案」,然後選擇「新增」選項。

Flurl C#(開發人員如何使用):圖 1 - 點擊新選項

「控制台應用程式」或「控制台應用程式」(.NET Core)"模板可以從以下專案模板參考列表中選擇。

請填寫「名稱」表單以為您的專案命名。

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

選擇一個保存專案的位置。

單擊“創建”將開啟控制台應用程式專案。

Flurl C#(為開發者所製): 圖 3 - 點擊「建立」

安裝 Flurl.Http 套件

第一步是使用 Visual Studio 中的 NuGet Package Manager Console 或 NuGet 套件管理器安裝 Flurl.Http 套件。

Install-Package Flurl.Http
Install-Package Flurl.Http
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

創建一個 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

發送 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
VB   C#

Flurl C#(開發人員如何使用):圖 4 - 範例控制台輸出

處理回應

根據預定格式管理響應內容(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}");
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

其他設定

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

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

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

入門

當您需要從遠程 API 檢索數據並使用該數據創建 PDF 文檔時,在 C# 項目中將 Flurl 與 IronPDF 集成可能會很有幫助。 開始使用Flurl和IronPDF,請按照以下步驟操作:

什麼是 IronPDF

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

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

IronPDF 使得將網頁、URL 和 HTML 轉換為高質量的 PDF 變得非常簡單,這些 PDF 看起來與原始內容一模一樣。 它非常適合製作線上報告、發票等的 PDF 檔案。 如果您一直在尋找將HTML轉PDFIronPDF 能滿足您的需求!

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
VB   C#

Flurl C#(開發人員的操作方式):圖 5 - IronPDF:C# PDF 庫

IronPDF 的功能

從 HTML 生成 PDF

將 JavaScript、HTML 和 CSS 轉換為 PDF。 它支持媒體查詢和響應式設計,這兩個當代的網絡標準。 它用於動態裝飾 PDF 報告、發票及文件,支援 HTML 和 CSS。

PDF 編輯

可以將文字、照片和其他內容添加到現有的PDF中。 可以從 PDF 文件中刪除文字和圖片。 多個PDF可以合併成一個文件。PDF文件可以分割成多個單獨的文件。 可包含浮水印、註解、頁首和頁尾。

PDF 轉換

將多種文件類型,包括Word、Excel和圖片文件,轉換為PDF格式。 PDF 轉換成圖像(PNG,JPEG 等。).

效能與可靠性

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

安裝 IronPDF

若要獲取在 .NET 專案中處理 PDF 所需的工具,請安裝 IronPDF 套件。

Install-Package IronPDF
Install-Package IronPDF
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPDF
VB   C#

使用 Flurl 擷取資料以生成 PDF

要進行 HTTP 查詢並從您的 API 獲取數據,請使用 Flurl 的流暢 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 HtmlToPdf();
            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 HtmlToPdf();
            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 HtmlToPdf()
			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
VB   C#

使用 Flurl 的 .GetJsonAsync()函數中,此範例發送一個 GET 請求。將 "User" 替換為表示 API 回應結構的模型類別,並將 "URL" 替換為您的實際 API 端點。 HTML 模板(htmlTemplate)可以轉換成PDF文檔

(pdf文件)使用 IronPDF 的 HtmlToPdf 類別。 在此範例中,從 API 獲取的標題和正文資料被用來動態構建 HTML 模板。 在檔案系統上,創建的 PDF 文件(pdf文件)已保存到指定位置(「document.pdf」). 要到達您想去的地方,改變路徑。

Flurl C#(開發者如何使用):圖 6 - 範例控制台輸出

為網絡故障等問題提供強大的錯誤處理(FlurlHttpException)或一般例外情况(例外)在資料獲取或 PDF 生成期間。 您可以使用 IronPDF 更改頁面大小、邊距、頁首、頁尾和其他 PDF 設置。 如需更多進階的自訂可能性,請參閱IronPDF的使用手冊。 在向 API 發送 HTTP 查詢時,確保敏感數據和訪問令牌得到安全處理。 使用您的 API 所需的正確身份驗證方法。

結論

總而言之,在 C# 應用程式中結合 IronPDF 用於 PDF 生成和 Flurl 用於 API 互動,提供了一種強大的組合,可動態獲取資料並生成高品質的 PDF 文件。 Flurl 庫具有流暢的 API,可以簡化 HTTP 請求,並在從遠端端點檢索數據時提供靈活性和使用者友好性。 此外,IronPDF 方便地將 HTML 資料轉換為 PDF 格式,提供可調整的功能,例如頁眉、邊距和頁面大小。

在實施此整合時,考慮速度優化、資料安全和錯誤處理也很重要。 藉由遵循最佳實踐並利用 Flurl 和 IronPDF 的優勢,開發人員可以創建可靠且可擴展的解決方案,以成功滿足現代應用程式的需求。

IronPDF 和Iron Software 的套件透過將 Iron Software 的高度靈活系統及套件與其核心支持相結合,提供額外的線上應用程式和功能,並提高開發效率。

如果授權選擇清晰並符合專案需求,開發者就能更好地確定哪種模式是理想且最佳的做法。這些好處使開發者能以清晰、有說服力且輕鬆整合的方式處理各種問題。

< 上一頁
IdentityServer .NET(對開發者的作用)
下一個 >
NServiceBus C#(如何為開發人員工作)