← Ко всем open source проектам

Retrofit

square/retrofit

Retrofit — типобезопасный HTTP-клиент Square для Android и JVM, построенный вокруг интерфейсов, аннотаций и конвертеров.

Форки 7,337
Автор square
Язык HTML
Лицензия Apache-2.0
Обновлено 2026-06-27

Что это такое

Retrofit — HTTP-клиент для Android и JVM, который превращает описание API в типобезопасные вызовы. Вместо ручной сборки URL и разбора ответов разработчик описывает сервис интерфейсом.

Проект появился в экосистеме Square рядом с OkHttp и решает соседнюю задачу: OkHttp отвечает за сетевой слой, а Retrofit помогает удобно описывать прикладной HTTP API.

Главная задача Retrofit — связать аннотации, параметры, конвертеры тела ответа и адаптеры вызовов так, чтобы код клиента оставался читаемым.

Что внутри

Внутри проекта есть библиотека, документация на сайте, координаты Maven `com.squareup.retrofit2:retrofit`, поддержка Java 8+ и Android API 21+, а также сведения про R8/ProGuard.

Retrofit обычно используют вместе с конвертерами JSON и OkHttp. В результате интерфейс сервиса становится контрактом между приложением и сервером.

Как используют

Обычный сценарий: описать методы API, указать путь и параметры, создать Retrofit-инстанс и вызвать метод из репозитория данных приложения.

Для Android это особенно удобно, потому что сетевой код перестает расползаться по экранам и становится отдельным слоем, который легче тестировать и менять.

Пример

Описание HTTP API как интерфейса

Пример показывает главную идею Retrofit: точка API описывается методом интерфейса, а библиотека строит вызов вокруг аннотаций.

Язык: Plain text
interface GitHubService {
  @GET("users/{user}/repos")
  suspend fun listRepos(@Path("user") user: String): List<Repo>
}

Сильные стороны

Сильная сторона Retrofit — ясность. По интерфейсу можно быстро понять, какие запросы делает приложение и какие типы данных оно ожидает.

Еще одно преимущество — зрелость связки с OkHttp, interceptors, логированием, авторизацией и кешем. Retrofit не заменяет сетевую политику, а делает API-уровень аккуратнее.

Ограничения

Ограничение в том, что типобезопасность не спасает от плохого контракта. Ошибки серверной схемы, нестабильные поля и неясные статусы нужно обрабатывать отдельно.

Также важно не превращать интерфейс Retrofit в огромную свалку точек API. Для большого приложения сервисы лучше делить по доменным областям.

Кому подойдет

Retrofit подойдет Android- и JVM-командам, которым нужен понятный слой HTTP API поверх надежного сетевого клиента.

Для маленького одноразового запроса можно обойтись OkHttp напрямую, но при росте API интерфейсный подход быстро начинает окупаться.

В каталоге Retrofit важен как библиотека, которая задала очень привычный стиль сетевой разработки в Android-мире.

Практический старт — описать один сервис, подключить JSON-конвертер, добавить обработку ошибок и только потом расширять клиент на остальные части API.

В реальном Android-приложении Retrofit особенно полезен рядом с четкой моделью ошибок. Команда заранее решает, какие ответы превращаются в исключения, где обновляется токен, как логируются сбои и какие типы данных считаются стабильной частью контракта.

Хороший слой Retrofit обычно сопровождается небольшими правилами команды: как именовать сервисы, где хранить DTO, что считать сетевой ошибкой и где переводить ответ API в доменную модель.