Cliente HTTP para C# (.NET): visão geral das melhores bibliotecas
No desenvolvimento de aplicações modernas em C# (.NET), quase sempre surge a necessidade de interagir com serviços web e APIs remotas. A classe base HttpClient fornece todos os recursos necessários, mas para cenários complexos (tentativas repetidas, serialização, interface fluente conveniente), a comunidade criou várias bibliotecas wrapper poderosas. Neste artigo, analisaremos os quatro clientes HTTP mais populares para C# (.NET), compararemos seus recursos e forneceremos exemplos de código.
1. HttpClient (integrado no .NET)
HttpClient é a classe padrão do namespace System.Net.Http, disponível em todas as versões do .NET (incluindo .NET Core, .NET 5/6/7/8). Ela é a base sobre a qual todas as outras bibliotecas são construídas.
Vantagens:
- Não requer instalação de pacotes adicionais (faz parte da BCL).
- Controle total sobre o processo de envio de requisições.
- Suporte a HTTP/1.1, HTTP/2, HTTP/3.
- Suporte integrado para compressão gzip/deflate.
- Possibilidade de trabalhar com streams (streaming).
Desvantagens:
- Requer gerenciamento manual de tentativas repetidas (retry).
- Não possui serialização/desserialização JSON integrada.
- Código verboso para operações típicas.
Exemplo 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 é uma das bibliotecas mais antigas e populares para trabalhar com APIs REST. Ela fornece uma interface fluente conveniente, serialização/desserialização automática de JSON e XML, além de tratamento de erros integrado.
Vantagens:
- API simples e intuitiva.
- Serialização/desserialização automática.
- Suporte integrado para autenticação (Basic, OAuth, JWT).
- Suporte para uploads de arquivos (multipart/form-data).
- Sistema flexível de tratamento de erros e tentativas repetidas.
Desvantagens:
- Dependência de pacote externo (NuGet: RestSharp).
- Para alguns cenários, abstrai excessivamente o HTTP.
Exemplo 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 Também na biblioteca
NestJS para TypeScript: guia completo com exemplos
Aprendizado de Máquina em C# (.NET): Visão Geral de Bibliotecas e Ferramentas
Trabalho com arquivos ZIP em PHP: guia completo sobre ZipArchive
TypeStack/class-validator para TypeScript: guia completo com exemplos
Serialização de objetos em Kotlin: bibliotecas e exemplos de código