Sobre o projeto

Refit é uma biblioteca REST automática e type-safe para .NET moderno, fortemente inspirada no Retrofit do Square. Ela transforma definições de API REST em interfaces vivas, permitindo que desenvolvedores definam contratos de API como interfaces C# com atributos de método HTTP e tenham o Refit gerando a implementação que usa HttpClient para fazer chamadas. A biblioteca suporta múltiplas plataformas, incluindo WinUI, .NET Framework 4.6.2+, .NET 8/9/10/11, Blazor e Uno Platform. Ela vem com geradores de código-fonte Roslyn que produzem clientes em tempo de compilação, reduzindo a reflexão em tempo de execução e habilitando aplicações trimmed e Native AOT. Recursos principais incluem: - Geração de código-fonte com registro automático de clientes no .NET 5+ - Suporte a métodos HTTP Get, Post, Put, Delete, Patch e Head - Parâmetros de query string dinâmicos, incluindo achatamento de objetos e formatação de coleções - Suporte a conteúdo de corpo para JSON, JSON Lines, XML e posts de formulário - Cabeçalhos de requisição estáticos e dinâmicos, incluindo autenticação Bearer - Uploads multipart com vários tipos de partes - Timeouts por requisição e suporte a token de cancelamento - Herança de interfaces e composição de múltiplas APIs - Métodos de interface padrão - Integração com HttpClientFactory para injeção de dependência - Suporte a HttpClient personalizado - Tratamento abrangente de exceções com ApiException e fábricas de exceção personalizadas - Suporte a testes via pacote Refit.Testing com tabelas de rota declarativas O gerador de código-fonte cobre a maioria dos formatos de requisição, incluindo parâmetros de caminho, parâmetros de consulta com aliases e formatação, conteúdo de corpo, cabeçalhos, uploads multipart, propriedades e vários tipos de resposta, incluindo IAsyncEnumerable para respostas transmitidas. Para formatos que o gerador não pode emitir, os métodos recorrem ao construtor de requisição por reflexão em tempo de execução. O Refit também inclui analisadores que sinalizam problemas comuns de interface em tempo de compilação, como modelos de rota inválidos, múltiplos parâmetros CancellationToken e tipos incorretos de HeaderCollection, com correções de código para ajustes mecânicos. A biblioteca fornece vários pacotes NuGet: Refit (núcleo), Refit.HttpClientFactory (integração com DI), Refit.Newtonsoft.Json (suporte a JSON.NET), Refit.Testing (utilitários de teste) e Refit.Reflection (fallback de reflexão em tempo de execução para ferramentas de build mais antigas).