Retrofit. Часть 1. Основы [RU] / Мобильный разработчик

Поделиться
HTML-код
  • Опубликовано: 19 окт 2024

Комментарии • 115

  • @ЮлияПоступинская
    @ЮлияПоступинская 3 года назад +11

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @tequilaonelove
    @tequilaonelove 3 года назад +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
      @MobileDeveloper  3 года назад +2

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

  • @BuyukIlhom
    @BuyukIlhom 3 года назад +5

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @user-sankarsana
    @user-sankarsana 3 года назад +4

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +3

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

  • @kafychannel
    @kafychannel 3 года назад +2

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

  • @Бананб-г4щ
    @Бананб-г4щ 3 года назад +2

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @agentr227
    @agentr227 2 года назад +1

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

  • @andrewgladkov9191
    @andrewgladkov9191 3 года назад +1

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @karjicohd1m0nd
    @karjicohd1m0nd 3 года назад

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

  • @asynchaizer
    @asynchaizer 3 года назад +1

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @ЮрійБережний-с7ъ
    @ЮрійБережний-с7ъ 3 года назад +2

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

  • @ИльшатБиккузин
    @ИльшатБиккузин 3 года назад

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

  • @ЕгорИванов-г7э
    @ЕгорИванов-г7э 3 года назад

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

  • @ДмитрийНаумов-ю7н
    @ДмитрийНаумов-ю7н 3 года назад +9

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @natalieg1736
    @natalieg1736 3 года назад

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

  • @Данил-о1в
    @Данил-о1в 3 года назад

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

  • @kafychannel
    @kafychannel 3 года назад +2

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

  • @ДаниилЗубаков-ю4в
    @ДаниилЗубаков-ю4в 3 года назад +1

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

  • @Размысл
    @Размысл 3 года назад +1

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @andreychesnovitskiy5350
    @andreychesnovitskiy5350 3 года назад

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

  • @paulsoja2732
    @paulsoja2732 3 года назад +1

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @ЭрланАлмаз
    @ЭрланАлмаз 3 года назад +2

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

  • @ВиталийМельниченко-ч1е

    Спасибо!

  • @dendor2291
    @dendor2291 3 года назад

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

  • @vitaliy2020
    @vitaliy2020 3 года назад

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

  • @dmytromarchuk3023
    @dmytromarchuk3023 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @tkasymuulu89
    @tkasymuulu89 3 года назад +6

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

    • @tequilaonelove
      @tequilaonelove 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +3

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

    • @rdevl1
      @rdevl1 3 года назад

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

  • @05Sambist
    @05Sambist 3 года назад

    Лучший!👍👍👍

  • @khametoff6386
    @khametoff6386 3 года назад

    Крутяк)

  • @androidkotlin-6234
    @androidkotlin-6234 2 года назад

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

  • @avcd
    @avcd 2 года назад

    Лучший

  • @maasiliy2002
    @maasiliy2002 3 года назад

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

  • @almazkadyrov523
    @almazkadyrov523 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @9etsamoe431
    @9etsamoe431 3 года назад

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

  • @ДмитрийРыжов-о4б
    @ДмитрийРыжов-о4б 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @Embedded_Developer
    @Embedded_Developer 3 года назад

    В #ТОП!!!!

  • @РожковАндрей-х8ш
    @РожковАндрей-х8ш 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @bolnoi8
    @bolnoi8 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @georg.sabantchiev
    @georg.sabantchiev 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @ХалилГамидов-ы1к
    @ХалилГамидов-ы1к 3 года назад +1

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @MrLOLs1
    @MrLOLs1 3 года назад

    Спасибо

  • @МаксимТолстобров-э9х

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

    • @МаксимТолстобров-э9х
      @МаксимТолстобров-э9х 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @СергейПанов-з3ц
    @СергейПанов-з3ц 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @syndicate820
    @syndicate820 2 года назад

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

  • @jojomajo
    @jojomajo 3 года назад

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

  • @honey7460
    @honey7460 2 месяца назад

    Где 3-я часть?

  • @хечпеч
    @хечпеч 3 года назад

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

  • @МаксимБогомолов-с4з

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @mr.z3813
    @mr.z3813 3 года назад

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

  • @saharozanosugar7029
    @saharozanosugar7029 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

  • @podo_x2
    @podo_x2 3 года назад

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

  • @9etsamoe431
    @9etsamoe431 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @podo_x2
    @podo_x2 3 года назад +1

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

  • @maksympavlenko5305
    @maksympavlenko5305 2 года назад

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

  • @andriyshatynskyy5214
    @andriyshatynskyy5214 3 года назад

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

    • @andriyshatynskyy5214
      @andriyshatynskyy5214 3 года назад

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

  • @yarobest9594
    @yarobest9594 3 года назад +1

    1

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

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

    • @yarobest9594
      @yarobest9594 3 года назад +1

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

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

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

  • @oleg12395
    @oleg12395 2 года назад

    Спасибо !

  • @sonyevans5182
    @sonyevans5182 3 года назад

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