Technologies

Retrofit2

Retrofit – типобезопасный HTTP-клиент для Android и Java, который активно используется при разработке мобильного приложения на Android. Ретрофит это библиотека, которая облегчает работу с API в клиент-серверных приложениях. Ее задача – упростить взаимодействие вашей программы с внешними сервисами. Например, с социальными сетями, рекламными сервисами и облачными хранилищами.

Как Retrofit2 работает «под капотом»?

Retrofit что это и как работает? Основная идея Retrofit2 – декларативное описание API. Разработчик создаёт Kotlin или Java интерфейс, где методы помечаются аннотациями (@GET, @POST, @PUT и т.д.). Во время выполнения Retrofit через динамический прокси генерирует реализацию этого интерфейса. Механизм работы включает:

  1. Формирование HTTP-запроса на основе аннотаций.
  2. Передачу запроса в OkHttp как транспортного слоя.
  3. Получение ответа сервера.
  4. Конвертацию JSON/XML в модель данных через Converter (например, Gson или Moshi).

Что такое Retrofit2? Он не является «полноценным HTTP-движком». Он работает поверх OkHttp, который отвечает за соединение, кэширование, пул потоков и TLS. Такая архитектура позволяет чётко разделить ответственность: Retrofit – декларация API и преобразование данных, OkHttp – сетевой транспорт.

Какое место занимает Retrofit2 в современной Android-архитектуре?

В Clean Architecture или MVVM Retrofit2 обычно находится в data-слое. Он используется внутри Repository, который инкапсулирует источники данных (API, кэш, локальная БД). Типичная цепочка выглядит так:

ViewModel – Repository – Retrofit Service – API

Retrofit2 хорошо сочетается с:

  • Kotlin Coroutines;
  • Flow;
  • RxJava;
  • DI-фреймворками (Hilt, Dagger).

Благодаря этому библиотека органично вписывается в современный стек Android-разработки и позволяет создавать тестируемую и масштабируемую архитектуру.

Зачем комбинировать Retrofit2 с RxJava?

RxJava добавляет реактивную модель обработки асинхронных потоков. Retrofit2 может возвращать Observable, Flowable или Single, что позволяет:

  • комбинировать несколько API-запросов;
  • обрабатывать ошибки централизованно;
  • контролировать потоки выполнения (Schedulers);
  • выполнять retry-логику.

В сложных приложениях с большим количеством сетевых операций RxJava обеспечивает контролируемый pipeline обработки данных. При этом в современных проектах всё чаще используется Kotlin Coroutines как более лёгкая альтернатива.

Чем обеспечивается безопасность данных в Retrofit2?

Безопасность основана на возможностях OkHttp и HTTPS:

  1. Поддержка TLS/SSL шифрования.
  2. Certificate Pinning для защиты от MITM-атак.
  3. Интерсепторы для добавления токенов авторизации (Bearer, OAuth).
  4. Контроль таймаутов и повторных попыток.

Retrofit2 не реализует безопасность самостоятельно, но позволяет интегрировать её через конфигурацию OkHttpClient. В продакшн-среде обычно добавляются:

  • authorization header;
  • механизм refresh token;
  • централизованная обработка ошибок 401/403.

Таким образом использование Retrofit2 безопасно использовать в комплексе.

Retrofit2 vs альтернативы: когда выбирать именно эту библиотеку?

Retrofit2 пример как и когда целесообразно выбирать:

  • API имеет REST-структуру;
  • нужна чёткая типизация моделей;
  • важна масштабируемость кода;
  • проект использует MVVM/Clean Architecture;
  • нужна интеграция с Coroutines или RxJava.

Если приложение простое и не требует сложной абстракции, можно использовать OkHttp напрямую. Для мультиплатформенных проектов чаще рассматривают Ktor Client, Volley или Flutter как альтернативный стек для создания кроссплатформенных мобильных решений. Flutter использует язык программирования Dart, что позволяет создавать высокопроизводительные мобильные приложения с единой кодовой базой для iOS и Android.

Retrofit2 в разработке от Brander

Что такое Retrofit для Brander? Наша команда использует Retrofit2 как стандарт интеграции мобильных приложений с backend-API. Почему?

01
Меньше кода – больше контроля

Библиотека уменьшает количество ручных настроек для работы с сетью, обеспечивает типизированные запросы, централизованную обработку ошибок и безопасность через HTTPS и интерсепторы.

02
Поддержка всех типов запросов

GET, POST, PUT, PATCH, DELETE, параметры в URL, асинхронные вызовы через Coroutines или RxJava – все реализуется декларативно и масштабируемо.

Retrofit2 – де-факто стандарт Android-разработки: более быстрое внедрение, стабильная архитектура, более простая поддержка продакшн-решений.

Частые вопросы
Retrofit2 – это полностью обновлённая версия библиотеки с улучшенной архитектурой, поддержкой CallAdapter и Converter, гибкой интеграцией с RxJava и Coroutines. Первая версия практически не используется в современных проектах.
Да. Retrofit2 нативно поддерживает suspend-функции, что позволяет выполнять сетевые запросы асинхронно без callback-подхода.
OkHttp – это низкоуровневый HTTP-клиент (транспорт, соединения, TLS). Retrofit2 – надстройка над OkHttp для декларативного описания API и автоматической сериализации ответов.

Разработка мобильных приложений в Украине
Разработка мобильных приложений в Украине

Разрабатываем приложения, которые решают бизнес-задачи клиентов и упрощают жизнь пользователей. Даже если эти задачи — со звёздочкой. Доставляем их в каждую ладошку и карман.