Cliente HTTP para C# (.NET): resumen de las mejores bibliotecas
Al desarrollar aplicaciones modernas en C# (.NET), casi siempre surge la necesidad de interactuar con servicios web remotos y API. La clase base HttpClient proporciona todas las capacidades necesarias, pero para escenarios complejos (reintentos, serialización, interfaz fluida conveniente), la comunidad ha creado varias bibliotecas envolventes potentes. En este artículo, revisaremos los cuatro clientes HTTP más populares para C# (.NET), compararemos sus capacidades y proporcionaremos ejemplos de código.
1. HttpClient (integrado en .NET)
HttpClient es la clase estándar del espacio de nombres System.Net.Http, disponible en todas las versiones de .NET (incluyendo .NET Core, .NET 5/6/7/8). Es la base sobre la que se construyen todas las demás bibliotecas.
Ventajas:
- No requiere instalar paquetes adicionales (incluido en BCL).
- Control total sobre el proceso de envío de solicitudes.
- Soporte para HTTP/1.1, HTTP/2, HTTP/3.
- Soporte integrado para compresión gzip/deflate.
- Posibilidad de trabajar con flujos (streaming).
Desventajas:
- Requiere gestión manual de reintentos (retry).
- No tiene serialización/deserialización JSON integrada.
- Código verboso para operaciones típicas.
Ejemplo de uso:
using System.Net.Http;using System.Text.Json;using System.Threading.Tasks;
public class UserClient{ private readonly HttpClient _httpClient;
public UserClient() { _httpClient = new HttpClient(); _httpClient.BaseAddress = new Uri("https://jsonplaceholder.typicode.com"); }
public async Task<User> GetUserAsync(int id) { var response = await _httpClient.GetAsync($"/users/{id}"); response.EnsureSuccessStatusCode(); var json = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<User>(json); }
public async Task<User> CreateUserAsync(User user) { var json = JsonSerializer.Serialize(user); var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync("/users", content); response.EnsureSuccessStatusCode(); var responseJson = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<User>(responseJson); }}
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}2. RestSharp
RestSharp es una de las bibliotecas más antiguas y populares para trabajar con API REST. Proporciona una interfaz fluida conveniente, serialización/deserialización automática de JSON y XML, así como manejo de errores integrado.
Ventajas:
- API simple e intuitiva.
- Serialización/deserialización automática.
- Soporte integrado para autenticación (Basic, OAuth, JWT).
- Soporte para cargas de archivos (multipart/form-data).
- Sistema flexible de manejo de errores y reintentos.
Desventajas:
- Dependencia de un paquete externo (NuGet: RestSharp).
- Para algunos escenarios, abstrae HTTP en exceso.
Ejemplo de uso:
using RestSharp;using System.Threading.Tasks;
public class UserClient{ private readonly RestClient _client;
public UserClient() { _client = new RestClient("https://jsonplaceholder.typicode.com"); }
public async Task<User> GetUserAsync(int id) { var request = new RestRequ También en la biblioteca
csv en Rust: guía completa con ejemplos prácticos
Internacionalización (i18n) en Swift para iOS y macOS
Pruebas en C++: revisión de frameworks y herramientas (Google Test, Catch2, doctest)
Geolocalización y mapas en TypeScript: bibliotecas, API y ejemplos de código