Retrofit: что это за библиотека и как с ней работать
2026-02-21 15:22 Diff

#статьи

  • 23 июл 2025
  • 0

Ускоряем работу Android-приложений с сервером.

Иллюстрация: Оля Ежак для Skillbox Media

Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.

Максим Сафронов

Шеф-редактор Skillbox Media «Код». Пишет о разработке, софт-скиллах и культовых личностях в IT. Обожает Swift, продукты Apple и мемы про код.

Современные Android-приложения постоянно обмениваются данными с сервером: показывают новости, списки пользователей, комментарии и многое другое. Чтобы запросить или отправить данные, приложения посылают серверу сообщения — HTTP-запросы. Для реализации этих функций при создании приложения можно использовать стандартные средства, предусмотренные Android Studio. Но есть это часто неудобно и требует много лишнего кода.

Здесь на сцену выходит Retrofit — библиотека, которая сильно упрощает работу с подобными задачами. Она позволяет буквально в несколько строк создавать модули, которые умеют отправлять запросы на сервер и получать от него ответы. Давайте разберёмся, как это сделать.

В этой статье мы:

В качестве сервера для теста мы будем использовать JSONPlaceholder — это бесплатный онлайн-сервис, который предоставляет тестовые данные через REST API. Он создан специально для того, чтобы разработчики могли тренироваться и отлаживать приложения без необходимости создавать собственный сервер или базу данных.

Также в качестве языка программирования мы используем Kotlin, который официально поддерживается Google и рекомендован для разработки Android-приложений. При этом Retrofit поддерживает и Java.

Запустите Android Studio и в главном окне нажмите на кнопку New Project. Если вы не знаете, что такое Android Studio и не работали с ней раньше, то сперва прочитайте эту статью. В ней — простое и понятное руководство для новичков.

Скриншот: Android Studio / Skillbox Media

После запуска на экране появится окно создания проекта. В нём выберите Phone and Tablet слева и шаблон Empty Activity. Затем нажмите Next.

Скриншот: Android Studio / Skillbox Media

Укажите имя проекта и в качестве языка программирования (Build configuration language) выберите Kotlin. Затем нажмите Finish.

Скриншот: Android Studio / Skillbox Media

В Android для подключения библиотек используют систему Gradle, которая автоматически скачивает и устанавливает нужные библиотеки к вашему проекту. Вам не нужно ничего искать вручную — просто добавьте нужные строки в файл build.gradle.kts вашего модуля (обычно это app/build.gradle.kts).

Перед началом установки Retrofit убедитесь, что у вас выбран режим отображения структуры Project. Так вы сможете видеть все файлы проекта.

Скриншот: Android Studio / Skillbox Media

В директории проекта найдите файл build.gradle.kts, щёлкните по нему два раза левой кнопкой мыши, чтобы открыть. Найдите в нём раздел dependencies и добавьте туда следующий код:

implementation ("com.squareup.retrofit2:retrofit:2.9.0") // Подключаем саму библиотеку Retrofit implementation ("com.squareup.retrofit2:converter-gson:2.9.0") // Подключаем конвертер для работы с JSON

Обязательно нажмите на кнопку Sync Now справа вверху, чтобы Android Studio приступил к установке Retrofit. Должно получиться вот так:

Скриншот: Android Studio / Skillbox Media

Модель данных, или data class, нужна для того, чтобы Retrofit автоматически преобразовывал ответ от сервера, который приходит в формате JSON, в объекты Kotlin. Без неё Retrofit не будет знать, как правильно интерпретировать полученные данные и во что их превращать. Всё это вам придётся делать вручную, что усложнит код и увеличит вероятность появления ошибок.

Чтобы получить данные с сервера правильно, нужно, чтобы элементы из модели данных имели такие же названия, какие указаны в JSON-файле, приходящем с сервера. То есть, когда мы отправляем запрос на https://jsonplaceholder.typicode.com/posts/1, сервер возвращает JSON-объект, который выглядит вот так:

{ "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", "body": "quia et suscipit\nsuscipit..." }

В нём:

  • userId — ID пользователя, который написал пост (число);
  • id — ID самого поста (число);
  • title — заголовок поста (строка);
  • body — текст поста (строка).

Чтобы преобразовать эти данные в объект Kotlin правильно, создайте новый Kotlin-файл Post.kt в папке app/src/main/java/имя_пакета/ и вставьте в него следующий код:

data class Post( val userId: Int, val id: Int, val title: String, val body: String )Скриншот: Android Studio / Skillbox Media

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

Интерфейс API — это набор правил, которые объясняют приложению:

  • какие запросы можно отправить на сервер. Например, получить список постов или создать новый пост;
  • какие параметры нужны для каждого запроса — ID поста или текст сообщения;
  • какой ответ вернёт сервер.

С помощью интерфейса API мы описываем, какие действия может выполнять наше приложение через интернет. Это похоже на меню в ресторане. Заглядывая в него, вы заранее знаете, что можно заказать и что вы получите.

Для создания интерфейса API перейдите в каталог с файлом Post.kt и создайте в нём ещё один файл — ApiService.kt. Вставьте в него следующий код:

import retrofit2.Call import retrofit2.http.* // Описываем, какие запросы мы хотим отправлять interface ApiService { // Получить все посты (GET) @GET("posts") fun getPosts(): Call<List<Post>> // Отправить новый пост (POST) @POST("posts") fun createPost(@Body post: Post): Call<Post> // Полностью обновить пост (PUT) @PUT("posts/{id}") fun updatePost(@Path("id") id: Int, @Body post: Post): Call<Post> // Частично обновить пост (PATCH) @PATCH("posts/{id}") fun patchPost(@Path("id") id: Int, @Body post: Map<String, Any>): Call<Post> // Удалить пост (DELETE) @DELETE("posts/{id}") fun deletePost(@Path("id") id: Int): Call<Void> }

В начале этого кода мы импортируем два интерфейса. Вот для чего они нужны:

  • import retrofit2.Call — подключает тип Call, который представляет собой отложенный HTTP-запрос. Это как бы обещание запроса, которое мы можем выполнить, когда захотим.
  • import retrofit2.http.* — подключает аннотации для описания HTTP-запросов (@GET, @POST, @PUT и другие).
Скриншот: Android Studio / Skillbox Media

Инициализация Retrofit — это процесс настройки библиотеки. Этот шаг необходим для того, чтобы запросы GET, POST, PUT, DELETE и другие выполнялись корректно, а данные из ответа сервера преобразовывались в удобные для использования объекты Kotlin.

В момент инициализации вы:

  • Настраиваете базовый URL API, например https://jsonplaceholder.typicode.com/, чтобы приложение знало, на какой сервер отправлять запросы.
  • Добавляете JSON-конвертер, чтобы Retrofit автоматически преобразовывал JSON-ответы от сервера в объекты Kotlin.
  • Создаёте объект Retrofit с URL и конвертером, который будет отвечать за выполнение всех запросов, а также за обработку и преобразование ответов.

Для инициализации создайте всё в той же папке файл RetrofitClient.kt со следующим содержимым:

import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory // Настроим Retrofit один раз на всё приложение object RetrofitClient { private val retrofit = Retrofit.Builder() .baseUrl("https://jsonplaceholder.typicode.com/") // Базовый адрес API .addConverterFactory(GsonConverterFactory.create()) // Автоконвертация JSON в Kotlin-объекты .build() val apiService: ApiService = retrofit.create(ApiService::class.java) }

В интерфейсе Android Studio должно получиться так:

Скриншот: Android Studio / Skillbox Media

Чтобы приложение работало без ошибок, нужно отредактировать главный скрипт — MainActivity.kt. Для этого откройте его (он лежит в каталоге, в котором мы создавали файлы) и в самое начало добавьте импорты:

import android.widget.LinearLayout // Используем LinearLayout для размещения дочерних элементов (например, TextView или Button) import android.widget.TextView // Используем TextView для отображения текста на экране import android.app.Activity // Используем Activity вместо AppCompatActivity import android.util.Log // Логирование сообщений для отладки import retrofit2.Call // Используем Call для выполнения запросов к серверу import retrofit2.Callback // Используем Callback для обработки асинхронных запросов import retrofit2.Response // Используем Response для обработки ответа от сервера import retrofit2.Retrofit // Используем Retrofit для работы с API import retrofit2.converter.gson.GsonConverterFactory // Используем GsonConverterFactory для преобразования JSON в объекты Kotlin

Весь код, расположенный ниже, стираем и взамен пишем следующее:

class MainActivity : Activity() { // Наследуем от Activity, это основной класс для взаимодействия с пользовательским интерфейсом в Android override fun onCreate(savedInstanceState: Bundle?) { // Метод, который вызывается при создании Activity super.onCreate(savedInstanceState) // Вызов родительского метода для того, чтобы инициализировать Activity // Создаём линейный макет, который будет содержать дочерние элементы val layout = LinearLayout(this) // Инициализация LinearLayout, передаём контекст layout.orientation = LinearLayout.VERTICAL // Устанавливаем вертикальное расположение элементов в макете // Создаём TextView, чтобы отобразить текст на экране val textView = TextView(this) // Инициализация TextView с контекстом текущей Activity textView.text = "Hello, Retrofit!" // Устанавливаем текст, который будет отображаться в TextView layout.addView(textView) // Добавляем созданный TextView в макет // Устанавливаем созданный layout как основной контент для Activity setContentView(layout) // Устанавливаем layout, чтобы он отображался в Activity // Запускаем асинхронный запрос, чтобы проверить работу Retrofit

В Android Studio это будет выглядеть так:

Скриншот: Android Studio / Skillbox Media

Осталась мелочь, но очень важная. Чтобы всё заработало, приложению нужно разрешение на выход в интернет. Для этого откройте файл app/src/main/AndroidManifest.xml и в него, до блока application, добавьте строку.

<uses-permission android:name="android.permission.INTERNET" />Скриншот: Android Studio / Skillbox Media

Слева вверху нажмите на кнопку меню (три полоски) и в пункте File выберите Save All.

Скриншот: Android Studio / Skillbox Media

Теперь нажмите на кнопку запуска приложения. Она находится справа вверху.

Скриншот: Android Studio / Skillbox Media

Подождите, пока запустится виртуальная машина Android, в которой и откроется приложение, — экран эмулятора станет белым. Теперь слева внизу найдите кнопку Logcat, нажмите на неё, чтобы открыть консоль логов. В ней вы увидите результаты запросов от Retrofit, полученные с JSONPlaceholder.

Скриншот: Android Studio / Skillbox Media

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

Больше о работе с Retrofit можно узнать из официальной документации. В ней есть примеры сложных запросов, советы по использованию и руководства по отдельным модулям библиотеки.

Курс с трудоустройством: «Профессия Разработчик + ИИ» Узнать о курсе