.NET 帮助

Refit C#(为开发者工作原理)

介绍

通过在 C# 中将RefitIronPDF相结合,两大强力库的最佳功能被整合,以生成极其高效的应用程序。 Refit 通过让开发者设计具有 C# 特性的 API 接口,自动生成HTTP请求,并保证类型安全的 API 访问,从而使使用 RESTful API 更加容易。 相反,IronPDF 为处理 PDF 文件提供了大量强大的功能,包括合并和注释 PDF 以及转换 HTML 内容。 这些库结合使用时,可为数据展示和检索提供流畅的工作流程。 使用 Refit 等工具从 API 获取数据,使用 IronPDF 等工具根据数据制作详尽、出色的 PDF 报告,可以提高数据驱动型应用程序开发的效率和生产力。

什么是Refit C#?

Refit 是一个用于 .NET 的开源框架,采用声明式、类型安全的方法简化向 RESTful API 发送 HTTP 请求的过程。Refit 通过将 API 端点指定为带有特征的 C# 接口,自动生成所需的 HTTP 客户端代码。 这样可以大大减少模板,提高代码的可读性。 通过在编译而非执行过程中检测错误,该技术可确保方法签名与 API 端点正确匹配。

此外,Refit 还能轻松处理 JSON 序列化和反序列化,使开发人员能够与 C# 对象进行交互,而无需手动转换 API 回复。 通过在接口规范中直接定义 HTTP 方法、标头和参数,属性可以简化配置。 由于在更新 API 端点时客户端代码需要修改的地方较少,因此代码会变得更简单、更易于维护。

例如,Refit 可以通过在接口中创建带有 [Get("/users/{id}")] 属性的方法来生成所需的 HTTP GET 请求字符串用户名。 然后,可以通过类型安全方法调用提出这一请求。 Refit 通过抽象出与管理 HTTP 客户端相关的令人头疼的问题,为开发人员将 API 集成到 .NET 应用程序中提供了一个全面的、更高效的解决方案。

Refit C#(它如何为开发者工作):图1 - Refit:适用于 .NET Core、Xamarin 和 .NET 的自动类型安全 REST 库

Refit C# 的特点

类型安全 API 可用性

Refit 可在编译时检测错误,并确保方法签名与 API 端点相匹配。 这种类型安全性降低了因端点不匹配或请求设置不当而导致运行时出错的可能性。

HTTP 客户端声明式

开发人员可以使用 C# 接口和属性来构建 API 端点,从而获得更简洁、更易维护的 HTTP 请求代码。 这种声明式方法抽象了为每个客户端实现 HTTP 请求方法的复杂性。

自动序列化和反序列化

Refit 会自动将 C# 对象转换为 JSON 数据。 由于开发人员不再需要手动序列化请求体或反序列化响应,数据处理变得更加简单。

基于属性的配置

属性用于定义HTTP方法(例如GET、POST、PUT和DELETE)和参数。 这使得配置简单易懂,因为它包括头、请求正文、内容、路径参数和查询参数。

异步编程支持

Refit 使用基于任务的方法来处理异步 HTTP 请求,可与 .NET 中的异步编程模型轻松交互。

适应性强的网络浏览器

开发人员可以通过更改超时数、默认头设置以及日志、身份验证和重试策略的消息处理程序配置来定制核心 HTTP 客户端。

综合错误管理

Refit 具有处理 HTTP 问题的内置功能,使开发人员可以轻松地加入自己的自定义错误处理逻辑。

适应性

开发人员可以利用 Refit 对自定义序列化和反序列化转换器的支持,使用多种格式或处理异常数据类型。

结合依赖注入集成

Refit 非常适合于现代 .NET 应用程序,这些应用程序遵循依赖注入 (DI) 的推荐实践,因为它易于集成到 DI 应用程序中。

协助验证

为了确保 API 调用的安全,Refit 可轻松配置身份验证头、接口方法(如承载令牌)和基本身份验证。

创建和配置 Refit C

以下步骤可用于用 C# 构建和设置 Refit 客户端:

创建一个新的Visual Studio项目

使用 Visual Studio 制作 Console 项目非常简单。 要在 Visual Studio 中创建一个控制台应用程序,请按照以下步骤操作:

在使用Visual Studio之前,请确认它已安装在您的计算机上。

开始一个新项目

打开 Visual Studio,点击 "创建新项目 "选项。

Refit C#(对开发者的作用):图2 - 在 Visual Studio 中,点击“创建新项目”选项并选择控制台应用程序。

从“创建新项目”框左侧的选择中,选择您喜欢的编程语言(例如C#)。

从以下项目模板参考列表中,您可以选择“控制台应用程序”或“控制台应用程序(.NET Core)”模板。

为您的项目命名,并选择项目的存储位置。

![Refit C#(开发者如何使用):图 3 - 通过指定项目名称、位置和解决方案名称来配置您的控制台应用程序。 然后点击下一步。

选择合适的 .NET Framework。 然后点击 "创建",创建控制台应用程序项目。

![Refit C#(为开发者工作原理):图4 - 选择.NET Framework,然后单击“创建”。 您的控制台应用程序项目将会成功创建。

安装改装

Refit 库必须首先包含在您的项目中。 您可以使用 NuGet 包管理器安装 Refit NuGet 包,或使用 Visual Studio 中的 .NET CLI 来完成安装。

采用 .NET CLI 进行安装:

dotnet add package Refit
dotnet add package Refit
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

定义 API 接口

制作一个象征您的 API 的界面。 要定义 HTTP 方法和端点,请使用 Refit 属性。

using Refit;
using System.Threading.Tasks;
public interface IMyApi
{
    [Get("/users/{id}")]
    Task<User> GetUserAsync(int id);
    [Post("/users")]
    Task<User> CreateUserAsync([Body] User user);
}
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    // Other properties...
}
using Refit;
using System.Threading.Tasks;
public interface IMyApi
{
    [Get("/users/{id}")]
    Task<User> GetUserAsync(int id);
    [Post("/users")]
    Task<User> CreateUserAsync([Body] User user);
}
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    // Other properties...
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

创建和配置 Refit 客户端

启动 Refit 客户端并根据需要调整其设置。 这可以直接在主代码或服务中实现,也可以在应用程序的其他位置实现。

using Refit;
using System;
using System.Threading.Tasks;
public class Program
{
    public static async Task Main(string[] args)
    {
        // Define the base URL of your API
        var apiClient = RestService.For<IMyApi>("https://api.example.com");
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        // Create a new user
        var newUser = new User { Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
    }
}
using Refit;
using System;
using System.Threading.Tasks;
public class Program
{
    public static async Task Main(string[] args)
    {
        // Define the base URL of your API
        var apiClient = RestService.For<IMyApi>("https://api.example.com");
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        // Create a new user
        var newUser = new User { Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

高级配置

通过设置底层 HttpClient,您可以进一步个性化 Refit 客户端。 例如,您可以设置超时、应用报头属性、添加默认报头,或使用消息处理程序进行重试策略、身份验证和日志记录。

using System.Net.Http;
using Refit;
using System;
using System.Threading.Tasks;
public class Program
{
    public static async Task Main(string[] args)
    {
        var httpClient = new HttpClient(new HttpClientHandler
        {
            // Customize the HttpClientHandler as needed
        })
        {
            BaseAddress = new Uri("https://api.example.com"),
            Timeout = TimeSpan.FromSeconds(30)
        };
        // Add default headers if needed
        httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_TOKEN_HERE");
        var apiClient = RestService.For<IMyApi>(httpClient);
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        // Create a new user
        var newUser = new User { Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
    }
}
using System.Net.Http;
using Refit;
using System;
using System.Threading.Tasks;
public class Program
{
    public static async Task Main(string[] args)
    {
        var httpClient = new HttpClient(new HttpClientHandler
        {
            // Customize the HttpClientHandler as needed
        })
        {
            BaseAddress = new Uri("https://api.example.com"),
            Timeout = TimeSpan.FromSeconds(30)
        };
        // Add default headers if needed
        httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_TOKEN_HERE");
        var apiClient = RestService.For<IMyApi>(httpClient);
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        // Create a new user
        var newUser = new User { Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

您可以按照以下说明在 C# 中创建和配置 Refit 客户端,从而使用类型安全和可维护的 RESTful API 消费。

Refit C#(它如何为开发人员工作):图5 - 控制台输出

入门

安装这两个库,使用 Refit 配置一个简单的 API 客户端来检索数据,并使用 IronPDF 基于这些数据创建 PDF,这些都是在 C# 项目中集成 Refit 和 IronPDF 的第一步。 以下是实现这一目标的步骤:

什么是IronPDF?

在.NET应用程序中处理PDF文档的功能丰富的库称为IronPDF。 凭借其广泛的功能集,用户可以从零开始或根据 HTML 资料创建 PDF,也可以通过添加、删除或更改部分内容来更改已有的 PDF 文档。 IronPDF 为开发人员提供了一个强大的 API,用于创建、修改和转换 PDF 文件,使在 .NET 应用程序中处理 PDF 变得更加容易。

IronPDF 在HTML 转 PDF转换方面表现出色,确保原始布局和样式的精确保留。 它非常适合从基于网络的内容(如报告、发票和文档)创建PDF。 IronPDF 支持 HTML 文件、URL 和原始 HTML 字符串,能够轻松生成高质量的 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");
    }
}
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

Refit C#(它如何为开发人员工作):图 6 - IronPDF for .NET:C# PDF 库

IronPDF 的主要功能

将HTML转换为PDF

IronPdf 可让您使用 HTML 内容(包括 CSS 和 JavaScript)创建高质量的 PDF 文档。 该功能对于从动态内容或网页创建 PDF 非常有帮助。

编辑和操作PDF文件

IronPDF 为已经存在的 PDF 文档提供修改工具。它可以从 PDF 中提取页面,添加文本、照片、水印或注释,并将多个 PDF 合并为一个文档。

从开始制作 PDF

通过 IronPdf 的 API,您可以以编程方式在新的 PDF 文档中添加文本、照片、形状和其他对象。 这使得动态生成 PDF 发票、报告和其他基于文档的输出成为可能。

PDF 的安全性

您可以使用 IronPDF 加密 PDF 文档并添加密码安全性,从而管理访问权限并保护关键数据。

PDF 格式

通过将数据放入表单字段,用户可以使用 IronPdf 创建和填写 PDF 表单,从而与 PDF 文档进行交互。

文本提取

IronPdf 通过从 PDF 文档中提取文本内容,便于轻松搜索、分析和处理文本数据。

转换为图片格式

IronPDF 适用于需要图像而非 PDF 的情况,因为它可以将 PDF 文档转换为常见的图像格式,包括 PNG、JPEG 和 BMP。

安装 IronPDF

使用 .NET CLI 或 NuGet 包管理器将 IronPDF 添加到您的 .NET 项目中。

dotnet add package IronPdf
dotnet add package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronPdf
$vbLabelText   $csharpLabel

集成IronPDF与Refit C

让我们来剖析一个结合了 Refit 和 IronPDF 的 C# 代码示例。 在本例中,我们将使用 Refit 从虚构的 RESTful API 中检索数据,并使用 IronPDF 根据这些数据创建 PDF 文档。 这是以下代码的操作:

using System;
using IronPdf;
using Refit;
    public static async Task Main(string[] args)
    {
        var apiClient = RestService.For<IMyApi>("https://api.example.com");
        try
        {
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        GeneratePdf(user);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        var rand = new Random(100);
        // Create a new user
        var newUser = new User { Id = rand.Next(), Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
//Passing html string as method parameter
public static void GeneratePdf(User user)
{
    var htmlContent = $@"
    <html>
        <head>
            <style>
                body {{ font-family: Arial, sans-serif; }}
                h1 {{ color: navy; }}
                p {{ font-size: 14px; }}
            </style>
        </head>
        <body>
            <h1>User Details</h1>
            <p><strong>ID:</strong> {user.Id}</p>
            <p><strong>Name:</strong> {user.Name}</p>
        </body>
    </html>";
    // Create an IronPDF ChromePdfRenderer instance
    var renderer = new ChromePdfRenderer();
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
    // Save the PDF to a file
    var filePath = "UserDetails.pdf";
    pdfDocument.SaveAs(filePath);
    Console.WriteLine($"PDF generated and saved to {filePath}");
}
using System;
using IronPdf;
using Refit;
    public static async Task Main(string[] args)
    {
        var apiClient = RestService.For<IMyApi>("https://api.example.com");
        try
        {
        // Use the API client to make requests
        var user = await apiClient.GetUserAsync(1);
        GeneratePdf(user);
        Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}");
        var rand = new Random(100);
        // Create a new user
        var newUser = new User { Id = rand.Next(), Name = "John Doe" };
        var createdUser = await apiClient.CreateUserAsync(newUser);
        Console.WriteLine($"Created User ID: {createdUser.Id}, Name: {createdUser.Name}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
//Passing html string as method parameter
public static void GeneratePdf(User user)
{
    var htmlContent = $@"
    <html>
        <head>
            <style>
                body {{ font-family: Arial, sans-serif; }}
                h1 {{ color: navy; }}
                p {{ font-size: 14px; }}
            </style>
        </head>
        <body>
            <h1>User Details</h1>
            <p><strong>ID:</strong> {user.Id}</p>
            <p><strong>Name:</strong> {user.Name}</p>
        </body>
    </html>";
    // Create an IronPDF ChromePdfRenderer instance
    var renderer = new ChromePdfRenderer();
    var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
    // Save the PDF to a file
    var filePath = "UserDetails.pdf";
    pdfDocument.SaveAs(filePath);
    Console.WriteLine($"PDF generated and saved to {filePath}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

使用Refit特性,我们构建了一个名为IMyApi的API接口,并提供了用于获取用户数据的端点。 我们为 API 构建了一个 Refit 客户端,并在 Main 函数中异步检索用户数据。 如果数据成功检索到,用户对象将传递给GeneratePdf方法。 使用 IronPDF 的ChromePdfRenderer类,我们在GeneratePdf方法中创建HTML 内容转换为 PDF的文本以表示用户详细信息,然后将其输出为 PDF 文档。 之后,创建的 PDF 将存储在磁盘文件中。

Refit C#(对开发者的工作原理):图7 - 控制台输出

以下是生成的 PDF 文件截图。

Refit C#(开发人员如何使用):图 8 - 使用 IronPDF 生成的输出 PDF

结论

总而言之,使用RESTful API和PDF生产的开发人员在C#中通过RefitIronPDF的集成拥有一个强大而有效的解决方案。 Refit 界面减少了模板代码,提高了可维护性,并提供了一种类型安全的声明式方法,使 API 的使用变得更加容易。不过,IronPDF 提供了大量用于制作、修改和处理 PDF 文档的工具,这使得从 HTML 文本创建高质量 PDF 变得简单。

开发人员可以轻松使用Refit从API中检索数据,并通过集成这两个工具,使用IronPDF基于该数据创建动态PDF文档。 这种集成简化了工作流程,也为创建动态、数据驱动的 PDF 报告、发票和其他基于文档的输出创造了大量机会。

您可以将IronPDF和其他Iron Software Technologies集成到您的企业应用开发栈中,以为客户和最终用户提供功能丰富的高端软件解决方案。 这一坚实的基础还将使项目、后端系统和流程改进变得更加容易。

开发人员可以充分利用免费试用的IronPDF,费用为$749。 由于拥有广泛的文档、活跃的在线开发者社区及定期更新,这些技术是现代软件开发项目的绝佳选择。

要了解有关如何开始使用IronPDF的更多信息,请访问HTML 转换为 PDF 的代码示例综合文档页面。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
CSLA .NET(它对开发人员的工作原理)
下一步 >
NBuilder .NET(它是如何为开发人员工作的)