Retrofit. Часть 1. Основы [RU] / Мобильный разработчик
Всем привет! Начнём разбирать мегаинтересную тему под названием интернет. Это видео про Основы этого дела.
Таймкоды
00:00 Введение
01:13 Теоретическая часть
06:32 Практическая часть
07:38 JSON
9:40 Адаптер RxJava
10:43 okhttp
12:39 logging interceptor
14:25 ссылка на видео singleton
14:50 Использование singleton
15:29 Подготовка к настройке retrofit
17:25 Ссылка на видео RxJava
22:13 Настройка интерфейса
28:27 Создание запроса
31:26 Попытка запуска
32:01 Второй запуск
33:01 Третий запуск
33:49 Четвёртый запуск
34:07 Другой метод
35:23 Запуск
35:54 Заключение
Пишите в комментариях в какую сторону хотелось бы копнуть поглубже
Напоминаю, что видео вначале выходят для моих патронов. Стать патроном можно по ссылке ниже
===========================================
Стать Патроном канала и получить доступ к уникальному материалу
/ mobiledeveloper
===========================================
Мобильный разработчик в других соц. сетях
=======================
Вконтакте - mdeveloper
Instagram - / nplau
Telegram - t.me/mobiledevnews
=======================
Ставь лайк и расскажи друзьям, чтобы они тоже попробовали эту технологию
Пікірлер: 114
Спасибо за видео! Самые крутые уроки в сети! Пожалуйста, не останавливайтесь)
@MobileDeveloper
3 жыл бұрын
Спасибо! Не останавливаюсь )
Как всегда на высшем уровне! Спасибо за видео, хотелось бы посмотреть ретрофит+рум+корутины+flow
@MobileDeveloper
3 жыл бұрын
Спасибо, это уже практика какая-то )
Спасибо большое за видео,с нетерпением ждём вторую часть))
@MobileDeveloper
3 жыл бұрын
Да, будет) как бы еще успевать все это )))
Вы продолжаете меня радовать)))
@MobileDeveloper
3 жыл бұрын
Это радует, спасибо )
офигенно, очень понятно, быстро и цельно. идеально, чтобы быстро вспомнить retrofit:)
@MobileDeveloper
3 жыл бұрын
Спасибо! )
Идеальное объяснение темы. Респект!
Спасибо за видео! Много мелких нюансов разобрано, все четко и по делу.
@MobileDeveloper
2 жыл бұрын
Спасибо )
Отлично! Было бы круто увидеть всё это на корутинах и флоу.
@MobileDeveloper
3 жыл бұрын
Спасибо )) Будет и такое
Спасибо за ваше видео, было интересно, ждем вторую часть.=) Хотелось бы добавить немного для зрителей, что при создании `data сlass Quest List Item()` как в примере в видео допустим, но при работе с каким нибудь публичным API или же со своим сервером, не стоит забывать о том, что весь запрос может "улететь в труху" , если какого-либо ключа в json (в ответе на GET/POST запрос) по какой то неведомой причине не будет или же будет не тот тип значения у ключа, что мы ожидаем, для примера, вместо внутри questSubtitle типа String нам прилетит внезапно тип null или еще лучше 0 типа Int. Гореть таким API разработчикам в аду =))). Очень часто сталкивался с различными проблемами при работе. Хорошо помогает ручной, беглый мониторинг запросов через тот же "Postman" и последующее приведение типа нужной переменной, например: (val questSubtitle : String) к `nullable` типу (val questSubtitle : String?) и прочие извращения и махинации). Так что если кто-то будет строить свой сервис или "апишку", обязательно не забывайте про стандарты! В дальнейшем очень помогут вам сэкономить кучу времени и избавят от дебага и копания внутри json' ки, особенно когда ответ от API будет в пару десятков или сотен ключей.
@MobileDeveloper
3 жыл бұрын
Хорошее замечание прям. Есть такая проблема действительно. Очень часто даже такое бывает. И действительно это все решается правильной архитектурой с разделением на слои. И как раз самый нижний слой принимает апи с нуллабельными полями. Причем мы делаем в Леруа все поля нуллабельные на всякий случай, а дальше их маппим внутри слоя с бизнес-логикой
Как я и просил) Спасибо большое!
@MobileDeveloper
3 жыл бұрын
Пожалуйста :)
Спасибо за видео, как всегда все классно, на первом запуске недосмотрел потому что не понимал какого фига запросы не уходят, по итогу создал интерцептор с хэдером, а потом вернулся к видосу. а ты мою проблему уже решил через 5 минут
@MobileDeveloper
2 жыл бұрын
Пожалуйста)
Оч подробный и крутой видос, автору уважение!) Спасибо
@MobileDeveloper
3 жыл бұрын
Спасибо )
Как новичку было очень иртересно и полезно!
Эх, когда-то дико не хватало подобных видео. Думаю стоит записать видео с отправкой файла на серв, MultipartBody, пару слов о GET vs POST + PATCH vs PUT + DELETE, подрубка прокси, авторизация, если ещё HARD'а, можно научить кидать запросы в сеть "вручную", без Retrofit'а, сказать про Rest vs GraphQL, хотя, возможно, это уже лишнее. Контент топ)
@MobileDeveloper
3 жыл бұрын
Спасибо, интересное предложение )
О, как раз недавно разбирал Ретрофит. Посмотрим что усвоил, спасибо
@MobileDeveloper
3 жыл бұрын
Напишите потом, как вам )
Спасибо за курс
@MobileDeveloper
3 жыл бұрын
Пожалуйста)
Для Android Studio есть плагин, который создает data-классы из JSON-ответа. Называется JSON To Kotlin Class.
@MobileDeveloper
3 жыл бұрын
Хм )) прикольно, спасибо )
Алексей, когда вторая часть? 5 месяцев ждем)) Видео очень полезное, благодарю!
@MobileDeveloper
3 жыл бұрын
Пишу сценарий )
Спасибо. Хотелось бы узнать побольше про аутентификацию с помощью интерсептора.
@MobileDeveloper
3 жыл бұрын
Спасибо за идею
Интереснейший ролик! Вот только ссылки на гитхаб категорически не хватает в описании. Из за мелкого шрифта разбирать на экране крайне сложно, и даже если его увеличить, такие ссылки совсем не помешают всем роликам, как прошлым, так и будущим.
@MobileDeveloper
3 жыл бұрын
Спасибо большое за обратную связь, постараюсь так и делать. Проблема тут в том, что часто хочется какие-то вещи показывать в существующем проекте, чтобы показать так сказать реальный боевой опыт. А их выложить не всегда могу
Лучший!👍👍👍
@MobileDeveloper
3 жыл бұрын
Спасибо ))
Большое спасибо
@MobileDeveloper
3 жыл бұрын
Пожалуйста )
Здравствуйте. Было бы интересно увидеть в следующем уроке про авторизацию.
@MobileDeveloper
3 жыл бұрын
Интересная мысль )
Супер! Спасибо! расскажите пожалуйста про авторизацию и токены
@MobileDeveloper
3 жыл бұрын
Попробую )
Спасибо !
Спасибо за песни вашего друга из soundcloud))
@MobileDeveloper
3 жыл бұрын
Пожалуйста :)
Спасибо за видео! Во время просмотра появился вопрос , если у нас есть несколько BASE URL, как в таком случае работать с одним инстансом Retrofit? и при этом не указывая полный URL в запросе?
@MobileDeveloper
3 жыл бұрын
А зачем тут именно один instance? Это принципиально условие? В таком случае обычно несколько инстансов создается и все
Спс за видео. Было бы интересно увидеть следующее. Допустим есть метод для логина и после успеха присылается токен. Далее этот токен юзается в запросах. В определенный момент токен заэкспайрится и его нужно будет обновить. Интересно, как бы Вы это реализовали.
@MobileDeveloper
3 жыл бұрын
Да, будет в следующей части )
Спасибо за видео! А Вы Hilt не используете в своей практике?
@MobileDeveloper
3 жыл бұрын
Спасибо, пока нет, но видео будет по этому поводу ) Специально изучу)
Спасибо
@MobileDeveloper
3 жыл бұрын
Пожалуйста)
на 15:30 мы наследуемся от Application - чтобы наш ретрофит клиент создался один раз , и мы его использовали из любой точки нашей программы? Это синглтон, но без проверки на нулл и статик полей, я правильно понял?
Крутяк)
использую еще с ретрофитом либу chucker. Реально удобно для дебага. Все запросы видно в шторке в телефоне (естественно это делаю только для дебаг билдов)
@MobileDeveloper
3 жыл бұрын
Не пробовал, спасибо за наводку)
Умеете, могете!
@MobileDeveloper
3 жыл бұрын
Спасибо
Зд-те! Покажите как работать с корутинами в связке с ретрофитом.
@tequilaonelove
3 жыл бұрын
есть пример с github: github.com/MindorksOpenSource/Retrofit-Kotlin-Coroutines-Example , можете посмотреть, изучить. Всё довольно просто.
@MobileDeveloper
3 жыл бұрын
Покажу ) В следующем видео
@rdevl1
3 жыл бұрын
@@MobileDeveloper Когда примерно выйдет?)
Лучший
@MobileDeveloper
2 жыл бұрын
Спасибо)
В #ТОП!!!!
@MobileDeveloper
3 жыл бұрын
Спасибо )
А можно обзор на все библиотеки аналогичные Ретрофиту и их сравнение? Ну а если все они хуже, то объяснение, почему хуже. Или другими словами, почему Ретрофит лучше своих аналогов (конкурентов).
@MobileDeveloper
2 жыл бұрын
Про ktor есть видео на канале, можете посмотреть
не совсем понято зачем фрагменты и фрагмент контайнер в активити мейн если ничего не выводится на экран
@MobileDeveloper
3 жыл бұрын
Дважды перечитал, потом понял ) Хз, не помню уже)
Спасибо. Покажите как писать кастомные десериализаторы. К примеру когда с сервера приходит "кривой" json, как его преобразовывать в классы, или когда часть json'а нужно десериализовать в enum классы или generic'и.
@MobileDeveloper
3 жыл бұрын
Хм, про дженерики интересно, а вот когда приходит кривой json, то надо понять, что вы имеете ввиду под "кривой"? Не формат json? Не те поля? Что вы имеете ввиду?)
Если бы это видео года полтора назад бы вышло, ты бы спас одну жизнь.
@MobileDeveloper
3 жыл бұрын
Ну надеюсь спасу еще несколько жизней тех, кто только начал ))
Здравствуйте, будут ли видео про Koin ?
@MobileDeveloper
3 жыл бұрын
Пока нет в планах
Привет, вторая часть в работе?)
@MobileDeveloper
Жыл бұрын
Она на канале уже
почему гита нет в описании?
Алексей, а почему бы не использовать плагин RoboPOJOGenerator? Руками создавать модели ответа от сервера, это вроде как извращение) а если будет json с 100+ переменными? Я не претендую на премию капитана очевидность, или может это делается просто в учебных целях.
@MobileDeveloper
3 жыл бұрын
А откуда генератор берет названия полей? В него типа JSON надо загрузить? Это не всегда есть гуд ) он не всегда точно создаёт нужные классы, как это принято в код стайле команды и так далее. Иногда быстрее написать чем крутить плагины ) в этом видео как раз такой вот случай. Если полей реально 100 то да беру один из онлайн генераторов и потом уже его допиливаю
@user-zi2sl7jh3t
3 жыл бұрын
@@MobileDeveloper да в него JSON грузится, который можно получить хоть постменом, хоть каким то другим сервисом для тестирования запросов. Просто, я сам работаю с интернет магазином и порой, когда пишешь запросы для личных данных пользователей, это не только имя и фамилия, а данные бонусной программы, личные акции, и прочее, получается огромный JSON и кучей массивов и объектов, проще генератором воспользоваться, и в целом генерация меня лично не разу не подводила, во всяком случае при использовании данного плагина.
@MobileDeveloper
3 жыл бұрын
А у вас нет в команде договорённостей вроде все модели с сервера должны заканчиваться на Remote или что-то вроде того? И как плагин работает с sealed class и enum?
Вы на видео ускоряете набор кода или реально так быстро печатаете?
@MobileDeveloper
3 жыл бұрын
Реально так быстро печатаю
Спасибо за видео, я стал чуточку умнее.
SerializedName надо писать всегда, потому что как только дойдёт дело до прогуарда, начнётся боль
@MobileDeveloper
2 жыл бұрын
Интересный нюанс, не думал об этом, но вообще да рефакторинг случайный туда же в копилку
не подскажите как лучше передавать apikey, через запрос(@QUERY) или есть вариант получше?
@MobileDeveloper
3 жыл бұрын
Есть вариант получше через Interceptors ) будет во второй части видео )
Видео Топ, но я так понял что 2 часть не вышла?
@MobileDeveloper
3 жыл бұрын
Я начал делать, но, к сожалению, заболел короной. Как только поправлюсь доделаю
@andriyshatynskyy5214
3 жыл бұрын
@@MobileDeveloper супер, буду ждать. желаю скорейшего выздоровления)))
Подскажите пожалуйста как сделать так, чтобы из MainActivity задавать параметр baseUrl
@MobileDeveloper
2 жыл бұрын
А для каких целей?
А где 2 часть? и можно вывести эти данные в RecyclerView, например
@MobileDeveloper
3 жыл бұрын
Я был в процессе съёмок, но заболел. Это первое видео на доделку как поправлюсь
я могу создать клиент сервак для того чтоб связать ESP8266 и моб приложение ?
@maksympavlenko5305
Жыл бұрын
используя эту библотеку
Об Interceptor'ах и Authenticator'ах расскажи
@MobileDeveloper
3 жыл бұрын
Окей )
Не могу понять разницу между com.squareup.okhttp3:okhttp-urlconnection и com.squareup.okhttp3:okhttp
@MobileDeveloper
3 жыл бұрын
Я тоже...
1
@MobileDeveloper
3 жыл бұрын
И что это вам дает?)
@yarobest9594
3 жыл бұрын
@@MobileDeveloper просто люблю так делать) тема интересная, у меня как раз девушка начинает изучать разработку под андроид, полюбопытствуем, что там у вас)
@MobileDeveloper
3 жыл бұрын
Вот, покажите ей) Может поможет)
Спасибо!