TL.HttpClientExtensionsLibrary
0.8.0
dotnet add package TL.HttpClientExtensionsLibrary --version 0.8.0
NuGet\Install-Package TL.HttpClientExtensionsLibrary -Version 0.8.0
<PackageReference Include="TL.HttpClientExtensionsLibrary" Version="0.8.0" />
<PackageVersion Include="TL.HttpClientExtensionsLibrary" Version="0.8.0" />
<PackageReference Include="TL.HttpClientExtensionsLibrary" />
paket add TL.HttpClientExtensionsLibrary --version 0.8.0
#r "nuget: TL.HttpClientExtensionsLibrary, 0.8.0"
#:package TL.HttpClientExtensionsLibrary@0.8.0
#addin nuget:?package=TL.HttpClientExtensionsLibrary&version=0.8.0
#tool nuget:?package=TL.HttpClientExtensionsLibrary&version=0.8.0
🌐 TL.HttpClientExtensionsLibrary
Resilient HttpClient extensions for .NET: safe request handling, built-in retry policies, JSON helpers, and robust API communication.
Extensões resilientes para HttpClient no .NET: manipulação segura de requisições, políticas de retry integradas, helpers de JSON e comunicação robusta com APIs.
O TL.HttpClientExtensionsLibrary é uma biblioteca .NET voltada para simplificar chamadas REST sobre System.Net.Http.HttpClient, adicionando suporte a políticas de retentativa resilientes, tratamento de rate limiting (HTTP 429), upload/download de arquivos e manipulação de autenticação com Bearer Token e JWT.
📦 Instalação
Adicione o pacote ao seu projeto através do .NET CLI:
dotnet add package TL.HttpClientExtensionsLibrary
🚀 Funcionalidades Principais
| Categoria | Métodos Disponíveis | Descrição |
|---|---|---|
| Envio & Respostas JSON | SendJsonAsync<T>(), ReadAsJsonAsync<T>(), PostJsonAsync<T>() |
Serialização e deserialização automática de payloads HTTP. |
| Resiliência & Retry | ExponentialBackoffRetryAsync(), RateLimitRetryAsync(), TimeoutRetryAsync() |
Retentativas com backoff exponencial e respeito a cabeçalhos Retry-After. |
| Autenticação & Tokens | AddBearerToken(token), ExtractClaims(token) |
Injeção de credenciais Bearer e inspeção de claims em tokens JWT. |
| Transferência de Arquivos | UploadFileAsync(), DownloadFileAsync(), GetFileSizeAsync() |
Upload via multipart/form-data e download via streams otimizados. |
| Diagnóstico & Logs | LogRequest(), LogResponse(), LogError() |
Rastreabilidade de chamadas HTTP externas sem vazamento de credenciais. |
💡 Nota de Arquitetura Corporativa: As extensões de retry deste pacote são leves e voltadas para chamadas HTTP pontuais, ferramentas CLI e scripts utilitários. Para microsserviços de alta concorrência em produção corporativa que demandam Circuit Breaker distribuído com estado compartilhado entre requisições, recomenda-se a adoção de
Polly v8ouMicrosoft.Extensions.Http.Resilienceintegrado aoIHttpClientFactory.
💡 Exemplos de Uso
using System.Net.Http;
using HttpClientExtensionsLibrary;
class Program
{
static async Task Main()
{
using var httpClient = new HttpClient();
httpClient.AddBearerToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...");
var payload = new { Nome = "Serviço de Cobrança", Ativo = true };
var resposta = await httpClient.SendJsonAsync<ResultadoDto>(
"https://api.empresa.com/servicos",
HttpMethod.Post,
payload
);
await httpClient.DownloadFileAsync(
"https://api.empresa.com/relatorios/2026-09.pdf",
@"C:\temp\relatorio.pdf"
);
}
}
🏛️ Decisões Arquiteturais e Segurança
Para detalhes sobre a prevenção de reenvio inválido de instâncias HttpRequestMessage, suporte a CancellationToken e proteção contra vazamento de tokens em logs, consulte o documento oficial:
📄 Licença
Distribuído sob a licença MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Newtonsoft.Json (>= 13.0.3)
- System.IdentityModel.Tokens.Jwt (>= 8.1.2)
-
net8.0
- Newtonsoft.Json (>= 13.0.3)
- System.IdentityModel.Tokens.Jwt (>= 8.1.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TL.HttpClientExtensionsLibrary:
| Package | Downloads |
|---|---|
|
TL.ExtensionLibrary.Infrastructure
Clean Architecture Infrastructure metapackage: database querying, resilient HTTP, and assembly scanning extensions, transitively including Application and Domain. |
GitHub repositories
This package is not used by any popular GitHub repositories.