Retrofit

Retrofit — типобезопасная библиотека HTTP-клиента для Android, Java и Kotlin, разработанная компанией Square. Она упрощает сетевое взаимодействие, превращая REST API в декларативные Java/Kotlin-интерфейсы с аннотациями и автоматически сериализуя ответы в объекты модели[1][2]. Для выполнения фактических HTTP-запросов библиотека опирается на OkHttp, сохраняя при этом возможность интеграции с RxJava, Kotlin coroutines и другими адаптерами вызовов.

Общие сведения
Retrofit
Тип Библиотека HTTP-клиента
Разработчик Square
Написана на Java, Kotlin
Операционные системы Кроссплатформенная (Android, JVM)
Последняя версия 2.9.0
Состояние Активно разрабатывается и обновляется
Лицензия Apache License 2.0
Сайт square.github.io/retrofit

Функции

Retrofit предоставляет разработчикам широкий набор возможностей:

  • типобезопасные вызовы HTTP-методов — поддерживаются GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS[3];
  • гибкая система аннотаций для описания параметров запросов: @Path, @Query, @Body, @Header, @Multipart и др.;
  • автоматическая сериализация и десериализация данных с помощью подключаемых конвертеров (Gson, Moshi, Jackson, Scalars, Protobuf)[4];
  • поддержка как синхронных, так и асинхронных вызовов через Call<T>, RxJava типы (Observable, Single и др.) и suspend-функции Kotlin coroutines (с версии 2.6.0)[5][6];
  • работа с динамическими URL-адресами и возможностью отмены запросов;
  • поддержка multipart-загрузок файлов и отправки form-urlencoded данных;
  • интеграция с перехватчиками OkHttp для логирования, аутентификации и кэширования; рекомендуется использовать версию logging-interceptor 4.9.1[7];
  • лицензирование под Apache License 2.0, что позволяет свободно использовать библиотеку в коммерческих и открытых проектах при условии сохранения копии лицензии[8].

Примеры использования

Ниже приведён упрощённый пример конфигурации и запроса к API на Kotlin c использованием suspend-функций (Retrofit ≥ 2.6.0):

interface ApiService {
    @GET("users")
    suspend fun getUsers(): List<User>
}
val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()
val api = retrofit.create(ApiService::class.java)
GlobalScope.launch(Dispatchers.IO) {
    val users = api.getUsers()      // сетевой запрос выполняется асинхронно
    println("Fetched ${users.size} users")
}

Для проектов, использующих RxJava 2, достаточно добавить адаптер вызовов и изменить возвращаемый тип:

@GET("posts")
Observable<List<Post>> getPosts();

Поддержка multipart-загрузки реализуется через аннотацию @Multipart:

@Multipart
@POST("upload")
Call<ResponseBody> upload(
        @Part MultipartBody.Part file,
        @Part("description") RequestBody desc);

Примечания

  1. Introduction to Retrofit 2. GeeksforGeeks. Дата обращения: 20 июня 2025.
  2. Building a scalable Android network layer with Retrofit. Medium. Дата обращения: 20 июня 2025.
  3. Retrofit Library in Android. Topcoder Thrive. Дата обращения: 20 июня 2025.
  4. Adding Gson converter to Retrofit 2. Future Studio. Дата обращения: 20 июня 2025.
  5. Retrofit tutorial for Android beginners. Daily.dev. Дата обращения: 20 июня 2025.
  6. Retrofit with Kotlin coroutines. Codersee. Дата обращения: 20 июня 2025.
  7. OkHttp logging-interceptor 4.9.1. Maven Central. Дата обращения: 20 июня 2025.
  8. Keeping your licenses in check. Medium. Дата обращения: 20 июня 2025.
© Правообладателем данного материала является АНО «Интернет-энциклопедия «РУВИКИ».
Использование данного материала на других сайтах возможно только с согласия АНО «Интернет-энциклопедия «РУВИКИ».