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