Об этом проекте
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 (резервная рефлексия во время выполнения для старых инструментов сборки).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.