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

  • @user-xv5tm9ph3d
    @user-xv5tm9ph3d3 жыл бұрын

    Спасибо за видео! Самые крутые уроки в сети! Пожалуйста, не останавливайтесь)

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо! Не останавливаюсь )

  • @BuyukIlhom
    @BuyukIlhom3 жыл бұрын

    Как всегда на высшем уровне! Спасибо за видео, хотелось бы посмотреть ретрофит+рум+корутины+flow

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо, это уже практика какая-то )

  • @user-gj4rz9hv1w
    @user-gj4rz9hv1w3 жыл бұрын

    Спасибо большое за видео,с нетерпением ждём вторую часть))

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Да, будет) как бы еще успевать все это )))

  • @kafychannel
    @kafychannel3 жыл бұрын

    Вы продолжаете меня радовать)))

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Это радует, спасибо )

  • @natalieg1736
    @natalieg17363 жыл бұрын

    офигенно, очень понятно, быстро и цельно. идеально, чтобы быстро вспомнить retrofit:)

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо! )

  • @agentr227
    @agentr2272 жыл бұрын

    Идеальное объяснение темы. Респект!

  • @user-oo3ow5dq9e
    @user-oo3ow5dq9e2 жыл бұрын

    Спасибо за видео! Много мелких нюансов разобрано, все четко и по делу.

  • @MobileDeveloper

    @MobileDeveloper

    2 жыл бұрын

    Спасибо )

  • @user-qu6mb9il6w
    @user-qu6mb9il6w3 жыл бұрын

    Отлично! Было бы круто увидеть всё это на корутинах и флоу.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо )) Будет и такое

  • @tequilaonelove
    @tequilaonelove3 жыл бұрын

    Спасибо за ваше видео, было интересно, ждем вторую часть.=) Хотелось бы добавить немного для зрителей, что при создании `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

    @MobileDeveloper

    3 жыл бұрын

    Хорошее замечание прям. Есть такая проблема действительно. Очень часто даже такое бывает. И действительно это все решается правильной архитектурой с разделением на слои. И как раз самый нижний слой принимает апи с нуллабельными полями. Причем мы делаем в Леруа все поля нуллабельные на всякий случай, а дальше их маппим внутри слоя с бизнес-логикой

  • @user-de6dd1dd8e
    @user-de6dd1dd8e3 жыл бұрын

    Как я и просил) Спасибо большое!

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Пожалуйста :)

  • @dmitryavdoshin9539
    @dmitryavdoshin95392 жыл бұрын

    Спасибо за видео, как всегда все классно, на первом запуске недосмотрел потому что не понимал какого фига запросы не уходят, по итогу создал интерцептор с хэдером, а потом вернулся к видосу. а ты мою проблему уже решил через 5 минут

  • @MobileDeveloper

    @MobileDeveloper

    2 жыл бұрын

    Пожалуйста)

  • @user-ez4ow9ui4g
    @user-ez4ow9ui4g3 жыл бұрын

    Оч подробный и крутой видос, автору уважение!) Спасибо

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо )

  • @user-jl7kw8hx6i
    @user-jl7kw8hx6i2 жыл бұрын

    Как новичку было очень иртересно и полезно!

  • @asynchaizer
    @asynchaizer3 жыл бұрын

    Эх, когда-то дико не хватало подобных видео. Думаю стоит записать видео с отправкой файла на серв, MultipartBody, пару слов о GET vs POST + PATCH vs PUT + DELETE, подрубка прокси, авторизация, если ещё HARD'а, можно научить кидать запросы в сеть "вручную", без Retrofit'а, сказать про Rest vs GraphQL, хотя, возможно, это уже лишнее. Контент топ)

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо, интересное предложение )

  • @andrewgladkov9191
    @andrewgladkov91913 жыл бұрын

    О, как раз недавно разбирал Ретрофит. Посмотрим что усвоил, спасибо

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Напишите потом, как вам )

  • @maasiliy2002
    @maasiliy20023 жыл бұрын

    Спасибо за курс

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Пожалуйста)

  • @user-ub8dn2qi5x
    @user-ub8dn2qi5x3 жыл бұрын

    Для Android Studio есть плагин, который создает data-классы из JSON-ответа. Называется JSON To Kotlin Class.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Хм )) прикольно, спасибо )

  • @user-jg6nj1ls8l
    @user-jg6nj1ls8l3 жыл бұрын

    Алексей, когда вторая часть? 5 месяцев ждем)) Видео очень полезное, благодарю!

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Пишу сценарий )

  • @andreychesnovitskiy5350
    @andreychesnovitskiy53503 жыл бұрын

    Спасибо. Хотелось бы узнать побольше про аутентификацию с помощью интерсептора.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо за идею

  • @user-zs4es8gj4p
    @user-zs4es8gj4p3 жыл бұрын

    Интереснейший ролик! Вот только ссылки на гитхаб категорически не хватает в описании. Из за мелкого шрифта разбирать на экране крайне сложно, и даже если его увеличить, такие ссылки совсем не помешают всем роликам, как прошлым, так и будущим.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо большое за обратную связь, постараюсь так и делать. Проблема тут в том, что часто хочется какие-то вещи показывать в существующем проекте, чтобы показать так сказать реальный боевой опыт. А их выложить не всегда могу

  • @05Sambist
    @05Sambist3 жыл бұрын

    Лучший!👍👍👍

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо ))

  • @sonyevans5182
    @sonyevans51823 жыл бұрын

    Большое спасибо

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Пожалуйста )

  • @dendor2291
    @dendor22913 жыл бұрын

    Здравствуйте. Было бы интересно увидеть в следующем уроке про авторизацию.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Интересная мысль )

  • @user-wo1fo2dm9v
    @user-wo1fo2dm9v3 жыл бұрын

    Супер! Спасибо! расскажите пожалуйста про авторизацию и токены

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Попробую )

  • @oleg12395
    @oleg12395 Жыл бұрын

    Спасибо !

  • @kafychannel
    @kafychannel3 жыл бұрын

    Спасибо за песни вашего друга из soundcloud))

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Пожалуйста :)

  • @user-ey7kb2jl8f
    @user-ey7kb2jl8f3 жыл бұрын

    Спасибо за видео! Во время просмотра появился вопрос , если у нас есть несколько BASE URL, как в таком случае работать с одним инстансом Retrofit? и при этом не указывая полный URL в запросе?

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    А зачем тут именно один instance? Это принципиально условие? В таком случае обычно несколько инстансов создается и все

  • @dmytromarchuk3023
    @dmytromarchuk30233 жыл бұрын

    Спс за видео. Было бы интересно увидеть следующее. Допустим есть метод для логина и после успеха присылается токен. Далее этот токен юзается в запросах. В определенный момент токен заэкспайрится и его нужно будет обновить. Интересно, как бы Вы это реализовали.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Да, будет в следующей части )

  • @user-jg4pk6bq2g
    @user-jg4pk6bq2g3 жыл бұрын

    Спасибо за видео! А Вы Hilt не используете в своей практике?

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо, пока нет, но видео будет по этому поводу ) Специально изучу)

  • @MrLOLs1
    @MrLOLs13 жыл бұрын

    Спасибо

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Пожалуйста)

  • @vitaliy2020
    @vitaliy20203 жыл бұрын

    на 15:30 мы наследуемся от Application - чтобы наш ретрофит клиент создался один раз , и мы его использовали из любой точки нашей программы? Это синглтон, но без проверки на нулл и статик полей, я правильно понял?

  • @khametoff6386
    @khametoff63863 жыл бұрын

    Крутяк)

  • @paulsoja2732
    @paulsoja27323 жыл бұрын

    использую еще с ретрофитом либу chucker. Реально удобно для дебага. Все запросы видно в шторке в телефоне (естественно это делаю только для дебаг билдов)

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Не пробовал, спасибо за наводку)

  • @9etsamoe431
    @9etsamoe4313 жыл бұрын

    Умеете, могете!

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо

  • @tkasymuulu89
    @tkasymuulu893 жыл бұрын

    Зд-те! Покажите как работать с корутинами в связке с ретрофитом.

  • @tequilaonelove

    @tequilaonelove

    3 жыл бұрын

    есть пример с github: github.com/MindorksOpenSource/Retrofit-Kotlin-Coroutines-Example , можете посмотреть, изучить. Всё довольно просто.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Покажу ) В следующем видео

  • @rdevl1

    @rdevl1

    3 жыл бұрын

    @@MobileDeveloper Когда примерно выйдет?)

  • @avcd
    @avcd2 жыл бұрын

    Лучший

  • @MobileDeveloper

    @MobileDeveloper

    2 жыл бұрын

    Спасибо)

  • @Embedded_Developer
    @Embedded_Developer3 жыл бұрын

    В #ТОП!!!!

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Спасибо )

  • @georg.sabantchiev
    @georg.sabantchiev2 жыл бұрын

    А можно обзор на все библиотеки аналогичные Ретрофиту и их сравнение? Ну а если все они хуже, то объяснение, почему хуже. Или другими словами, почему Ретрофит лучше своих аналогов (конкурентов).

  • @MobileDeveloper

    @MobileDeveloper

    2 жыл бұрын

    Про ktor есть видео на канале, можете посмотреть

  • @user-gi8bi1ri8l
    @user-gi8bi1ri8l3 жыл бұрын

    не совсем понято зачем фрагменты и фрагмент контайнер в активити мейн если ничего не выводится на экран

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Дважды перечитал, потом понял ) Хз, не помню уже)

  • @user-oc7py1vy6s
    @user-oc7py1vy6s3 жыл бұрын

    Спасибо. Покажите как писать кастомные десериализаторы. К примеру когда с сервера приходит "кривой" json, как его преобразовывать в классы, или когда часть json'а нужно десериализовать в enum классы или generic'и.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Хм, про дженерики интересно, а вот когда приходит кривой json, то надо понять, что вы имеете ввиду под "кривой"? Не формат json? Не те поля? Что вы имеете ввиду?)

  • @almazkadyrov523
    @almazkadyrov5233 жыл бұрын

    Если бы это видео года полтора назад бы вышло, ты бы спас одну жизнь.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Ну надеюсь спасу еще несколько жизней тех, кто только начал ))

  • @mr.z3813
    @mr.z38133 жыл бұрын

    Здравствуйте, будут ли видео про Koin ?

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Пока нет в планах

  • @syndicate820
    @syndicate820 Жыл бұрын

    Привет, вторая часть в работе?)

  • @MobileDeveloper

    @MobileDeveloper

    Жыл бұрын

    Она на канале уже

  • @jojomajo
    @jojomajo2 жыл бұрын

    почему гита нет в описании?

  • @user-zi2sl7jh3t
    @user-zi2sl7jh3t3 жыл бұрын

    Алексей, а почему бы не использовать плагин RoboPOJOGenerator? Руками создавать модели ответа от сервера, это вроде как извращение) а если будет json с 100+ переменными? Я не претендую на премию капитана очевидность, или может это делается просто в учебных целях.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    А откуда генератор берет названия полей? В него типа JSON надо загрузить? Это не всегда есть гуд ) он не всегда точно создаёт нужные классы, как это принято в код стайле команды и так далее. Иногда быстрее написать чем крутить плагины ) в этом видео как раз такой вот случай. Если полей реально 100 то да беру один из онлайн генераторов и потом уже его допиливаю

  • @user-zi2sl7jh3t

    @user-zi2sl7jh3t

    3 жыл бұрын

    @@MobileDeveloper да в него JSON грузится, который можно получить хоть постменом, хоть каким то другим сервисом для тестирования запросов. Просто, я сам работаю с интернет магазином и порой, когда пишешь запросы для личных данных пользователей, это не только имя и фамилия, а данные бонусной программы, личные акции, и прочее, получается огромный JSON и кучей массивов и объектов, проще генератором воспользоваться, и в целом генерация меня лично не разу не подводила, во всяком случае при использовании данного плагина.

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    А у вас нет в команде договорённостей вроде все модели с сервера должны заканчиваться на Remote или что-то вроде того? И как плагин работает с sealed class и enum?

  • @9etsamoe431
    @9etsamoe4313 жыл бұрын

    Вы на видео ускоряете набор кода или реально так быстро печатаете?

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Реально так быстро печатаю

  • @androidkotlin-6234
    @androidkotlin-62342 жыл бұрын

    Спасибо за видео, я стал чуточку умнее.

  • @bolnoi8
    @bolnoi82 жыл бұрын

    SerializedName надо писать всегда, потому что как только дойдёт дело до прогуарда, начнётся боль

  • @MobileDeveloper

    @MobileDeveloper

    2 жыл бұрын

    Интересный нюанс, не думал об этом, но вообще да рефакторинг случайный туда же в копилку

  • @user-dj4yz4iw5n
    @user-dj4yz4iw5n3 жыл бұрын

    не подскажите как лучше передавать apikey, через запрос(@QUERY) или есть вариант получше?

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Есть вариант получше через Interceptors ) будет во второй части видео )

  • @andriyshatynskyy5214
    @andriyshatynskyy52143 жыл бұрын

    Видео Топ, но я так понял что 2 часть не вышла?

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Я начал делать, но, к сожалению, заболел короной. Как только поправлюсь доделаю

  • @andriyshatynskyy5214

    @andriyshatynskyy5214

    3 жыл бұрын

    @@MobileDeveloper супер, буду ждать. желаю скорейшего выздоровления)))

  • @user-hc8wi1vd1b
    @user-hc8wi1vd1b2 жыл бұрын

    Подскажите пожалуйста как сделать так, чтобы из MainActivity задавать параметр baseUrl

  • @MobileDeveloper

    @MobileDeveloper

    2 жыл бұрын

    А для каких целей?

  • @saharozanosugar7029
    @saharozanosugar70293 жыл бұрын

    А где 2 часть? и можно вывести эти данные в RecyclerView, например

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Я был в процессе съёмок, но заболел. Это первое видео на доделку как поправлюсь

  • @maksympavlenko5305
    @maksympavlenko5305 Жыл бұрын

    я могу создать клиент сервак для того чтоб связать ESP8266 и моб приложение ?

  • @maksympavlenko5305

    @maksympavlenko5305

    Жыл бұрын

    используя эту библотеку

  • @podo_x2
    @podo_x23 жыл бұрын

    Об Interceptor'ах и Authenticator'ах расскажи

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Окей )

  • @podo_x2
    @podo_x23 жыл бұрын

    Не могу понять разницу между com.squareup.okhttp3:okhttp-urlconnection и com.squareup.okhttp3:okhttp

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Я тоже...

  • @yarobest9594
    @yarobest95943 жыл бұрын

    1

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    И что это вам дает?)

  • @yarobest9594

    @yarobest9594

    3 жыл бұрын

    @@MobileDeveloper просто люблю так делать) тема интересная, у меня как раз девушка начинает изучать разработку под андроид, полюбопытствуем, что там у вас)

  • @MobileDeveloper

    @MobileDeveloper

    3 жыл бұрын

    Вот, покажите ей) Может поможет)

  • @user-ve2sp2pu4f
    @user-ve2sp2pu4f2 жыл бұрын

    Спасибо!

Келесі