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).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.