
Flurl C# | Solicitudes HTTP fluidas y testables en .NET
Cuando se trata del desarrollo de C#, incorporar bibliotecas sólidas puede aumentar significativamente la producción y capacidad. Dos de estas bibliotecas que funcionan bien juntas son Flurl y IronPDF, que brindan a los programadores herramientas poderosas para crear PDFs e interactuar con APIs en línea, respectivamente.
Flurl ofrece una sintaxis fluida y expresiva que facilita trabajar con solicitudes HTTP, APIs y sus extremos de API en C#. Enviar solicitudes HTTP, responder a ellas y administrar parámetros de consulta o encabezados son solo algunas de las tareas que simplifica. Los desarrolladores pueden gestionar la autenticación, serializar y deserializar JSON, y consumir APIs web de manera rápida y efectiva utilizando Flurl, todo mientras escriben un código legible y bien organizado.
Los desarrolladores pueden aprovechar la facilidad de uso y versatilidad de Flurl en conjunto con IronPDF para crear documentos PDF detallados y preparados conectándose con APIs web, recuperando datos e integrándolos en IronPDF con facilidad. Con esta integración, los programadores pueden diseñar aplicaciones complejas que, al automatizar la creación de documentos utilizando datos en tiempo real extraídos de servicios en línea, mejoran la productividad y la experiencia del usuario.
En esta introducción, veremos cómo usar y combinar Flurl e IronPDF en un programa de C#, destacando sus ventajas y potencial para la sinergia en el desarrollo de software moderno y contemporáneo.
What is Flurl C#?
Flurl es una biblioteca C# robusta y fácil de usar para gestionar solicitudes HTTP y comunicarse con APIs en línea. Proporciona una sintaxis fluida y encadenable que mejora la legibilidad y mantenibilidad del código y reduce la complejidad de interactuar con APIs RESTful. Los desarrolladores pueden crear y enviar fácilmente solicitudes HTTP, manejar respuestas de manera fácil de entender y gestionar parámetros de consulta, encabezados y cargas útiles con Flurl.
Una de las características más notables de Flurl es su capacidad para gestionar la construcción dinámica de URL, lo que facilita la creación y modificación de URL según las circunstancias de ejecución, permitiendo también que se use como un constructor de URL independiente. Ofrece un fuerte soporte para gestionar la serialización y deserialización de datos JSON y admite funcionalidades HTTP populares como GET, POST, PUT, DELETE, etc. Además, Flurl tiene funcionalidades integradas para gestionar datos de formularios y parámetros de consulta, lo que lo hace adaptable a una variedad de escenarios de integración de API.
Interfaz fluida
La sintaxis encadenable y fluida proporcionada por Flurl mejora la legibilidad y mantenibilidad del programa. Los desarrolladores pueden crear solicitudes HTTP simples y expresivas y trabajar con URLs, parámetros de consulta, encabezados y cargas útiles.
Soporte de métodos HTTP
Se admiten todos los métodos estándares HTTP, incluidos GET, POST, PUT, DELETE, PATCH, HEAD y OPTIONS. Los desarrolladores pueden realizar varias tareas al trabajar con APIs web gracias a este enfoque de soporte integral.
Manejo de parámetros de consulta
Flurl ofrece formas fáciles de modificar, agregar y eliminar parámetros de consulta dentro de URLs. Facilita la creación de URLs dinámicas basadas en la entrada del usuario o situaciones de ejecución.
Soporte JSON
El manejo de datos JSON es admitido de manera nativa por Flurl. Puede deserializar fácilmente respuestas JSON en objetos C# y serializar objetos a JSON para cargas útiles de solicitudes. Debido a esto, utilizar APIs basadas en JSON es sencillo y fácil.
Soporte de datos de formulario y multiparte
Facilita la gestión de solicitudes multipartes y datos de formularios. Flurl hace que sea simple para los desarrolladores incluir cargas útiles multipart/form-data o datos codificados por formularios en solicitudes HTTP.
Manejo de errores y políticas de reintento
Flurl ofrece capacidades de manejo de errores y definición de políticas de reintento para todas las llamadas HTTP. Al definir lógicas de manejo de errores únicas o técnicas de reintento, los desarrolladores pueden mejorar la resiliencia y la fiabilidad de las llamadas e interacciones de API. Esto también salvaguarda y ayuda a los desarrolladores a prevenir errores de objetos anónimos en las respuestas.
Autenticación
Soporta varios métodos de autenticación populares para APIs web, incluidos OAuth, esquemas de autenticación personalizados, Autenticación Básica y claves de API. Esto asegura comunicaciones seguras con APIs que requieren autenticación.
Soporte para pruebas
Al aislar la lógica relacionada con HTTP en componentes reutilizables con una separación clara de preocupaciones, Flurl fomenta la prueba. Esto hace que escribir pruebas unitarias para las interacciones API sea más simple, ya que no se requieren llamadas a redes reales para probarlas.
Flexibilidad de configuración
Proporciona flexibilidad de configuración para clientes HTTP y parámetros de solicitud. Los desarrolladores pueden cambiar comportamientos del cliente, tiempos de espera, cantidades de respuesta de error, encabezados y otras configuraciones para satisfacer las necesidades de aplicaciones particulares o limitaciones de API.
Extensibilidad
Debido a su marco para plugins, Flurl es muy extendible. Los desarrolladores pueden aumentar la funcionalidad de la plataforma construyendo extensiones únicas o incorporando plugins de terceros para obtener más funciones.
Create and configure Flurl C#
Aquí están los siguientes pasos para construir y configurar Flurl en un proyecto C#:
Crear un nuevo proyecto de Visual Studio
Es fácil crear un proyecto de consola con Visual Studio. Para iniciar una aplicación de consola en el entorno de Visual Studio, sigue estos simples pasos:
Asegúrate de que Visual Studio esté instalado en tu computadora antes de intentar usarlo.
Iniciar un nuevo proyecto
Elige Archivo, Proyecto y luego elige la opción Nuevo.

Se puede seleccionar ya sea la plantilla "Aplicación de Consola" o "Aplicación de Consola (.NET Core)" de la lista de referencias de plantillas de proyecto a continuación.
Por favor completa el formulario de "Nombre" para darle un nombre a tu proyecto.

Elige un lugar para guardar el proyecto.
Al hacer clic en "Crear" se abrirá el proyecto de aplicación de consola.

Instalar el paquete Flurl.Http
El primer paso es instalar el paquete Flurl.Http utilizando la Consola del Administrador de Paquetes de NuGet o el Administrador de Paquetes de NuGet en Visual Studio.
Crear una configuración de FlurlClient
Flurl ofrece la clase FlurlClient, que te permite establecer parámetros predeterminados para cada solicitud HTTP que utiliza simplemente el constructor de URL. Este paso opcional pero útil se puede lograr configurando URLs base o encabezados predeterminados.
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")Hacer peticiones HTTP
Ahora puedes realizar solicitudes HTTP utilizando la URL fluida de Flurl.
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
Respuestas
Para gestionar el contenido de la respuesta según el formato deseado (JSON, cadena, etc.), las HttpResponseMessageExtensions de Flurl ofrecen métodos de extensión, como ReceiveJson y 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}");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}")Configuración adicional
-
Parámetros de consulta: Para añadir parámetros de consulta, utiliza el método
.SetQueryParams(). Asegúrate de que cada petición se ejecute usando la misma instancia deHttpClientpara mayor eficiencia. -
Timeouts: Por ejemplo, puedes configurar timeouts con
.WithTimeout(TimeSpan.FromSeconds(30)). -
Manejo de Errores: Para manejar escenarios de error particulares, usa
.OnError().
Empezando
Cuando necesites recuperar datos de una API remota y crear documentos PDF utilizando esos datos, integrar Flurl con IronPDF en un proyecto de C# puede ser útil. Para comenzar con Flurl e IronPDF, sigue estos pasos:
¿Qué es IronPDF?
Una biblioteca .NET rica en funciones llamada IronPDF está disponible en programas C# para crear, leer y modificar documentos PDF. Con la ayuda de esta herramienta, los desarrolladores pueden generar rápidamente PDFs listos para imprimir y de alta calidad a partir de contenido HTML, CSS y JavaScript. Algunas capacidades esenciales incluyen la capacidad de marcar agua, crear encabezados y pies de página, dividir y combinar PDFs, y convertir HTML a PDF. IronPDF admite el .NET Framework y el .NET Core, lo que lo hace útil para varias aplicaciones.
Debido a que los PDFs son sencillos de integrar y cuentan con una amplia documentación detallada, los desarrolladores pueden emplearlos fácilmente en sus aplicaciones. IronPDF asegura que los PDFs generados se asemejen estrechamente al contenido HTML de origen al manejar eficientemente diseños complejos y estilos.
IronPDF simplifica mucho la conversión de páginas web, URLs y HTML en PDFs de alta calidad que se ven igual que el contenido original. Es perfecto para crear PDFs de informes en línea, facturas y más. Si has estado buscando una forma de convertir HTML a PDF, ¡IronPDF te cubre!
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
Características de IronPDF
Generación de PDF desde HTML
Convierte JavaScript, HTML y CSS a PDF. Admite consultas de medios y diseño responsivo, dos estándares web contemporáneos. Es útil para decorar dinámicamente informes PDF, facturas y documentos con HTML y CSS.
Edición de PDF
Se pueden añadir texto, fotos y otros contenidos a PDFs preexistentes. Se pueden eliminar texto e imágenes de archivos PDF. Numerosos PDFs pueden combinarse en un solo archivo. Los archivos PDF pueden dividirse en múltiples documentos separados. Se pueden incluir marcas de agua, anotaciones, encabezados y pies de página.
Conversión de PDF
Convierte varios tipos de archivos, incluidos los archivos de Word, Excel y de imagen, al formato PDF. Conversión de PDF a imagen (PNG, JPEG, etc.).
Rendimiento y Fiabilidad
Un alto rendimiento y fiabilidad son cualidades de diseño deseadas en entornos industriales, ya que pueden gestionar extensas colecciones de documentos de manera efectiva.
Instalar IronPDF
Para obtener las herramientas que necesitas para trabajar con PDFs en proyectos .NET, instala el paquete IronPDF.
Obtener datos con Flurl para generar un PDF
Para hacer consultas HTTP y obtener datos de tu API, utiliza la API fluida de Flurl. Este es un ejemplo de recuperación de datos 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; }
}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 ClassEn este ejemplo, la función .GetJsonAsync() de Flurl se utiliza para enviar una solicitud GET y obtener datos JSON. Reemplaza User con tu clase de modelo, que representa la estructura de respuesta de la API, y "URL" con tu punto final actual de la API. Una plantilla HTML (htmlTemplate) puede ser renderizada en un documento PDF usando la clase ChromePdfRenderer de IronPDF. Aquí, el título y los datos del cuerpo recuperados de la API se usan para construir dinámicamente la plantilla HTML. El documento PDF creado (pdfDocument) se guarda en la ubicación especificada ("document.pdf") en el sistema de archivos. Modifica la ruta según sea necesario.

Proporciona un manejo robusto de errores para problemas como fallos de red (FlurlHttpException) o excepciones generales (Exception) durante la obtención de datos o producción de PDF. Puedes cambiar el tamaño de la página, los márgenes, los encabezados, los pies de página y otras configuraciones de PDF utilizando IronPDF. Para obtener más posibilidades de personalización avanzadas, consulta el manual de IronPDF. Al enviar consultas HTTP a APIs, asegúrate de que los datos sensibles y los tokens de acceso se manejen de manera segura. Usa los métodos de autenticación adecuados que requiera tu API.
Conclusión
En resumen, combinar IronPDF para la generación de PDF con Flurl para la interacción con API en una aplicación C# ofrece una combinación poderosa para recuperar datos dinámicamente y producir documentos PDF de alta calidad. Con su API fluida, la biblioteca Flurl simplifica las solicitudes HTTP y proporciona flexibilidad y facilidad de uso al recuperar datos de puntos finales distantes. Además, IronPDF facilita la fácil traducción de material HTML a formato PDF, ofreciendo características ajustables como encabezados, márgenes y tamaño de página.
Al implementar esta integración, también es importante considerar la optimización de velocidad, la seguridad de los datos y el manejo de errores. Al seguir las mejores prácticas y aprovechar las ventajas de Flurl e IronPDF, los desarrolladores pueden crear soluciones confiables y escalables que satisfagan con éxito los requisitos de las aplicaciones modernas.
IronPDF y Iron Software's Suite ofrecen aplicaciones en línea adicionales y capacidades y un desarrollo más eficiente al combinar los sistemas altamente flexibles de Iron Software y su suite con su soporte central.
Si las alternativas de licencia son claras y específicas para las necesidades del proyecto, los desarrolladores están mejor capacitados para determinar qué modelo es ideal y la mejor práctica. Estos beneficios permiten a los desarrolladores gestionar una variedad de problemas de manera clara, convincente y sin problemas de integración.

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.
Artículos Relacionados


