Ответ
Да, работал. Retrofit — популярная библиотека для работы с сетевыми запросами в Android. Она упрощает взаимодействие с REST API, преобразуя HTTP-запросы в Java/Kotlin-интерфейсы.
Пример:
interface ApiService {
@GET("users/{id}")
suspend fun getUser(@Path("id") userId: Int): User
}
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val api = retrofit.create(ApiService::class.java)
val user = api.getUser(1) // suspend-функция для корутин
Плюсы:
- Удобный синтаксис (аннотации)
- Поддержка корутин, RxJava, LiveData
- Конвертация JSON в объекты (Gson, Moshi)
- Возможность кастомизации (OkHttp Interceptors)
Работал с обработкой ошибок, кешированием, добавлением заголовков и мультипарт-запросами.
Ответ 18+ 🔞
А, Retrofit? Да, конечно, работал, куда ж без него. Это ж, бля, классика, как бутерброд с колбасой. Библиотека, которая из дикого крика в OkHttp превращает всё в красивые аннотации, чтобы не писать эти ебушки-воробушки с запросами руками.
Вот смотри, как это выглядит, простейший пример:
interface ApiService {
@GET("users/{id}")
suspend fun getUser(@Path("id") userId: Int): User
}
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val api = retrofit.create(ApiService::class.java)
val user = api.getUser(1) // suspend-функция для корутин
И в чём же его магия, спросишь ты? А вот в чём, ёпта:
- Синтаксис — просто песня. Вместо того чтобы городить
HttpUrlConnectionили клеить строки запроса, ты пишешь интерфейс, как будто вызываешь методы у локального объекта. Аннотации@GET,@POST— красота, а не работа. - Поддержка всего, что душе угодно. Хочешь корутины — пожалуйста,
suspendфункции. Хочешь RxJava — возвращайObservable. LiveData? Без проблем. Не надо изобретать велосипед, всё уже прикручено. - Конвертация JSON в объекты — это вообще отдельный вид искусства. Кинул
GsonConverterFactoryилиMoshiConverterFactoryв билдер, и всё — твой JSON сам превращается в твой data-класс. Раньше бы это парсингом ручным заниматься, а теперь — ни хуя себе — одна строчка. - Кастомизация на любой вкус. Через OkHttp Interceptors можно любую дичь прикрутить: логирование запросов (чтобы видеть, что ты на сервер посылаешь, а то мало ли), автоматическое добавление заголовков авторизации, обработку ошибок глобально. Хочешь кеширование — тоже туда же.
Говоря про обработку ошибок — это отдельная история. Можно через Interceptors ловить коды ответов 400-е, 500-е и кидать свои кастомные исключения, чтобы не проверять в каждом вызове. С кешированием тоже игрался — настраивал политику через тот же OkHttp, чтобы не дергать сервер по каждому чиху. Заголовки, мультипарт-запросы (когда файлы надо отправить) — всё это было. Библиотека, в общем, доверия ебать ноль не вызывает, потому что проверена временем и работает как швейцарские часы, если, конечно, не накосячить с конфигурацией.