Об этом проекте

Refit — это автоматическая типобезопасная REST-библиотека для современного .NET, вдохновленная библиотекой Retrofit от Square. Она превращает определения REST API в живые интерфейсы, позволяя разработчикам описывать контракты API как интерфейсы C# с атрибутами HTTP-методов, а Refit генерирует реализацию, использующую HttpClient для выполнения запросов. Библиотека поддерживает несколько платформ, включая WinUI, .NET Framework 4.6.2+, .NET 8/9/10/11, Blazor и Uno Platform. Она поставляется с генераторами исходного кода Roslyn, которые создают клиенты во время сборки, уменьшая рефлексию во время выполнения и обеспечивая поддержку обрезки и нативных AOT-приложений. Ключевые возможности включают: - Генерацию исходного кода с автоматической регистрацией клиентов на .NET 5+ - Поддержку HTTP-методов Get, Post, Put, Delete, Patch и Head - Динамические параметры строки запроса, включая упрощение объектов и форматирование коллекций - Поддержку тела запроса для JSON, JSON Lines, XML и форм - Статические и динамические заголовки запросов, включая Bearer-аутентификацию - Многокомпонентные загрузки с различными типами частей - Тайм-ауты для отдельных запросов и поддержку токенов отмены - Наследование интерфейсов и композицию нескольких API - Методы интерфейса по умолчанию - Интеграцию с HttpClientFactory для внедрения зависимостей - Поддержку пользовательских HttpClient - Всестороннюю обработку исключений с ApiException и пользовательскими фабриками исключений - Поддержку тестирования через пакет Refit.Testing с декларативными таблицами маршрутов Генератор исходного кода охватывает большинство форм запросов, включая параметры пути, параметры запроса с псевдонимами и форматированием, содержимое тела, заголовки, многокомпонентные загрузки, свойства и различные типы ответов, включая IAsyncEnumerable для потоковых ответов. Для форм, которые генератор не может создать, методы возвращаются к построителю запросов на основе рефлексии во время выполнения. Refit также включает анализаторы, которые выявляют распространенные проблемы интерфейсов на этапе компиляции, такие как недопустимые шаблоны маршрутов, несколько параметров CancellationToken и неправильные типы HeaderCollection, с исправлениями кода для механических корректировок. Библиотека предоставляет несколько пакетов NuGet: Refit (основной), Refit.HttpClientFactory (интеграция с DI), Refit.Newtonsoft.Json (поддержка JSON.NET), Refit.Testing (тестовые утилиты) и Refit.Reflection (резервная рефлексия во время выполнения для старых инструментов сборки).