Technologies

Retrofit2

Retrofit – типобезпечний HTTP-клієнт для Android і Java, який активно використовується під час розробки мобільного застосунку на Android. Це бібліотека, яка полегшує роботу з API в клієнт-серверних додатках. Її завдання спростити взаємодію вашої програми із зовнішніми службами. Наприклад, з соціальними мережами, рекламними сервісами і хмарними сховищами.

Як Retrofit2 працює «під капотом»?

Основна ідея 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

Команда 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 та автоматичної серіалізації відповідей.

Розробка мобільних додатків в Україні
Розробка мобільних додатків в Україні

Створюємо мобільні додатки, які вирішують бізнес-задачі клієнтів та спрощують життя користувачів. Навіть якщо ці задачі — із зірочкою. Доставляємо їх у кожну долоньку та кишеню.