Спасибо за ваше видео, было интересно, ждем вторую часть.=) Хотелось бы добавить немного для зрителей, что при создании `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 будет в пару десятков или сотен ключей.
Хорошее замечание прям. Есть такая проблема действительно. Очень часто даже такое бывает. И действительно это все решается правильной архитектурой с разделением на слои. И как раз самый нижний слой принимает апи с нуллабельными полями. Причем мы делаем в Леруа все поля нуллабельные на всякий случай, а дальше их маппим внутри слоя с бизнес-логикой
Спасибо за видео, как всегда все классно, на первом запуске недосмотрел потому что не понимал какого фига запросы не уходят, по итогу создал интерцептор с хэдером, а потом вернулся к видосу. а ты мою проблему уже решил через 5 минут
Эх, когда-то дико не хватало подобных видео. Думаю стоит записать видео с отправкой файла на серв, MultipartBody, пару слов о GET vs POST + PATCH vs PUT + DELETE, подрубка прокси, авторизация, если ещё HARD'а, можно научить кидать запросы в сеть "вручную", без Retrofit'а, сказать про Rest vs GraphQL, хотя, возможно, это уже лишнее. Контент топ)
на 15:30 мы наследуемся от Application - чтобы наш ретрофит клиент создался один раз , и мы его использовали из любой точки нашей программы? Это синглтон, но без проверки на нулл и статик полей, я правильно понял?
Интереснейший ролик! Вот только ссылки на гитхаб категорически не хватает в описании. Из за мелкого шрифта разбирать на экране крайне сложно, и даже если его увеличить, такие ссылки совсем не помешают всем роликам, как прошлым, так и будущим.
Спасибо большое за обратную связь, постараюсь так и делать. Проблема тут в том, что часто хочется какие-то вещи показывать в существующем проекте, чтобы показать так сказать реальный боевой опыт. А их выложить не всегда могу
использую еще с ретрофитом либу chucker. Реально удобно для дебага. Все запросы видно в шторке в телефоне (естественно это делаю только для дебаг билдов)
Спс за видео. Было бы интересно увидеть следующее. Допустим есть метод для логина и после успеха присылается токен. Далее этот токен юзается в запросах. В определенный момент токен заэкспайрится и его нужно будет обновить. Интересно, как бы Вы это реализовали.
А можно обзор на все библиотеки аналогичные Ретрофиту и их сравнение? Ну а если все они хуже, то объяснение, почему хуже. Или другими словами, почему Ретрофит лучше своих аналогов (конкурентов).
Спасибо. Покажите как писать кастомные десериализаторы. К примеру когда с сервера приходит "кривой" json, как его преобразовывать в классы, или когда часть json'а нужно десериализовать в enum классы или generic'и.
Хм, про дженерики интересно, а вот когда приходит кривой json, то надо понять, что вы имеете ввиду под "кривой"? Не формат json? Не те поля? Что вы имеете ввиду?)
Спасибо за видео! Во время просмотра появился вопрос , если у нас есть несколько BASE URL, как в таком случае работать с одним инстансом Retrofit? и при этом не указывая полный URL в запросе?
Алексей, а почему бы не использовать плагин RoboPOJOGenerator? Руками создавать модели ответа от сервера, это вроде как извращение) а если будет json с 100+ переменными? Я не претендую на премию капитана очевидность, или может это делается просто в учебных целях.
А откуда генератор берет названия полей? В него типа JSON надо загрузить? Это не всегда есть гуд ) он не всегда точно создаёт нужные классы, как это принято в код стайле команды и так далее. Иногда быстрее написать чем крутить плагины ) в этом видео как раз такой вот случай. Если полей реально 100 то да беру один из онлайн генераторов и потом уже его допиливаю
@@MobileDeveloper да в него JSON грузится, который можно получить хоть постменом, хоть каким то другим сервисом для тестирования запросов. Просто, я сам работаю с интернет магазином и порой, когда пишешь запросы для личных данных пользователей, это не только имя и фамилия, а данные бонусной программы, личные акции, и прочее, получается огромный JSON и кучей массивов и объектов, проще генератором воспользоваться, и в целом генерация меня лично не разу не подводила, во всяком случае при использовании данного плагина.
А у вас нет в команде договорённостей вроде все модели с сервера должны заканчиваться на Remote или что-то вроде того? И как плагин работает с sealed class и enum?
@@MobileDeveloper просто люблю так делать) тема интересная, у меня как раз девушка начинает изучать разработку под андроид, полюбопытствуем, что там у вас)
Спасибо за видео! Самые крутые уроки в сети! Пожалуйста, не останавливайтесь)
Спасибо! Не останавливаюсь )
Как всегда на высшем уровне! Спасибо за видео, хотелось бы посмотреть ретрофит+рум+корутины+flow
Спасибо, это уже практика какая-то )
Отлично! Было бы круто увидеть всё это на корутинах и флоу.
Спасибо )) Будет и такое
Для Android Studio есть плагин, который создает data-классы из JSON-ответа. Называется JSON To Kotlin Class.
Хм )) прикольно, спасибо )
Спасибо за ваше видео, было интересно, ждем вторую часть.=)
Хотелось бы добавить немного для зрителей, что при создании `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 будет в пару десятков или сотен ключей.
Хорошее замечание прям. Есть такая проблема действительно. Очень часто даже такое бывает. И действительно это все решается правильной архитектурой с разделением на слои. И как раз самый нижний слой принимает апи с нуллабельными полями. Причем мы делаем в Леруа все поля нуллабельные на всякий случай, а дальше их маппим внутри слоя с бизнес-логикой
Вы продолжаете меня радовать)))
Это радует, спасибо )
Спасибо большое за видео,с нетерпением ждём вторую часть))
Да, будет) как бы еще успевать все это )))
Спасибо за видео, как всегда все классно, на первом запуске недосмотрел потому что не понимал какого фига запросы не уходят, по итогу создал интерцептор с хэдером, а потом вернулся к видосу. а ты мою проблему уже решил через 5 минут
Пожалуйста)
Спасибо за видео! Много мелких нюансов разобрано, все четко и по делу.
Спасибо )
офигенно, очень понятно, быстро и цельно. идеально, чтобы быстро вспомнить retrofit:)
Спасибо! )
Идеальное объяснение темы. Респект!
Эх, когда-то дико не хватало подобных видео. Думаю стоит записать видео с отправкой файла на серв, MultipartBody, пару слов о GET vs POST + PATCH vs PUT + DELETE, подрубка прокси, авторизация, если ещё HARD'а, можно научить кидать запросы в сеть "вручную", без Retrofit'а, сказать про Rest vs GraphQL, хотя, возможно, это уже лишнее. Контент топ)
Спасибо, интересное предложение )
О, как раз недавно разбирал Ретрофит. Посмотрим что усвоил, спасибо
Напишите потом, как вам )
Как новичку было очень иртересно и полезно!
Алексей, когда вторая часть? 5 месяцев ждем))
Видео очень полезное, благодарю!
Пишу сценарий )
Как я и просил) Спасибо большое!
Пожалуйста :)
Зд-те! Покажите как работать с корутинами в связке с ретрофитом.
есть пример с github: github.com/MindorksOpenSource/Retrofit-Kotlin-Coroutines-Example , можете посмотреть, изучить. Всё довольно просто.
Покажу ) В следующем видео
@@MobileDeveloper Когда примерно выйдет?)
Супер! Спасибо! расскажите пожалуйста про авторизацию и токены
Попробую )
на 15:30 мы наследуемся от Application - чтобы наш ретрофит клиент создался один раз , и мы его использовали из любой точки нашей программы? Это синглтон, но без проверки на нулл и статик полей, я правильно понял?
Интереснейший ролик! Вот только ссылки на гитхаб категорически не хватает в описании. Из за мелкого шрифта разбирать на экране крайне сложно, и даже если его увеличить, такие ссылки совсем не помешают всем роликам, как прошлым, так и будущим.
Спасибо большое за обратную связь, постараюсь так и делать. Проблема тут в том, что часто хочется какие-то вещи показывать в существующем проекте, чтобы показать так сказать реальный боевой опыт. А их выложить не всегда могу
использую еще с ретрофитом либу chucker. Реально удобно для дебага. Все запросы видно в шторке в телефоне (естественно это делаю только для дебаг билдов)
Не пробовал, спасибо за наводку)
Оч подробный и крутой видос, автору уважение!) Спасибо
Спасибо )
Здравствуйте. Было бы интересно увидеть в следующем уроке про авторизацию.
Интересная мысль )
Спасибо. Хотелось бы узнать побольше про аутентификацию с помощью интерсептора.
Спасибо за идею
Спс за видео. Было бы интересно увидеть следующее. Допустим есть метод для логина и после успеха присылается токен. Далее этот токен юзается в запросах. В определенный момент токен заэкспайрится и его нужно будет обновить. Интересно, как бы Вы это реализовали.
Да, будет в следующей части )
Спасибо за песни вашего друга из soundcloud))
Пожалуйста :)
Если бы это видео года полтора назад бы вышло, ты бы спас одну жизнь.
Ну надеюсь спасу еще несколько жизней тех, кто только начал ))
SerializedName надо писать всегда, потому что как только дойдёт дело до прогуарда, начнётся боль
Интересный нюанс, не думал об этом, но вообще да рефакторинг случайный туда же в копилку
Спасибо за курс
Пожалуйста)
Спасибо за видео, я стал чуточку умнее.
не совсем понято зачем фрагменты и фрагмент контайнер в активити мейн если ничего не выводится на экран
Дважды перечитал, потом понял ) Хз, не помню уже)
А можно обзор на все библиотеки аналогичные Ретрофиту и их сравнение?
Ну а если все они хуже, то объяснение, почему хуже. Или другими словами, почему Ретрофит лучше своих аналогов (конкурентов).
Про ktor есть видео на канале, можете посмотреть
Спасибо. Покажите как писать кастомные десериализаторы. К примеру когда с сервера приходит "кривой" json, как его преобразовывать в классы, или когда часть json'а нужно десериализовать в enum классы или generic'и.
Хм, про дженерики интересно, а вот когда приходит кривой json, то надо понять, что вы имеете ввиду под "кривой"? Не формат json? Не те поля? Что вы имеете ввиду?)
Лучший!👍👍👍
Спасибо ))
Спасибо за видео! Во время просмотра появился вопрос , если у нас есть несколько BASE URL, как в таком случае работать с одним инстансом Retrofit? и при этом не указывая полный URL в запросе?
А зачем тут именно один instance? Это принципиально условие? В таком случае обычно несколько инстансов создается и все
Спасибо за видео! А Вы Hilt не используете в своей практике?
Спасибо, пока нет, но видео будет по этому поводу ) Специально изучу)
Где 3-я часть?
почему гита нет в описании?
Привет, вторая часть в работе?)
Она на канале уже
Большое спасибо
Пожалуйста )
Умеете, могете!
Спасибо
не подскажите как лучше передавать apikey, через запрос(@QUERY) или есть вариант получше?
Есть вариант получше через Interceptors ) будет во второй части видео )
Алексей, а почему бы не использовать плагин RoboPOJOGenerator? Руками создавать модели ответа от сервера, это вроде как извращение) а если будет json с 100+ переменными? Я не претендую на премию капитана очевидность, или может это делается просто в учебных целях.
А откуда генератор берет названия полей? В него типа JSON надо загрузить? Это не всегда есть гуд ) он не всегда точно создаёт нужные классы, как это принято в код стайле команды и так далее. Иногда быстрее написать чем крутить плагины ) в этом видео как раз такой вот случай. Если полей реально 100 то да беру один из онлайн генераторов и потом уже его допиливаю
@@MobileDeveloper да в него JSON грузится, который можно получить хоть постменом, хоть каким то другим сервисом для тестирования запросов. Просто, я сам работаю с интернет магазином и порой, когда пишешь запросы для личных данных пользователей, это не только имя и фамилия, а данные бонусной программы, личные акции, и прочее, получается огромный JSON и кучей массивов и объектов, проще генератором воспользоваться, и в целом генерация меня лично не разу не подводила, во всяком случае при использовании данного плагина.
А у вас нет в команде договорённостей вроде все модели с сервера должны заканчиваться на Remote или что-то вроде того? И как плагин работает с sealed class и enum?
Подскажите пожалуйста как сделать так, чтобы из MainActivity задавать параметр baseUrl
А для каких целей?
Об Interceptor'ах и Authenticator'ах расскажи
Окей )
Лучший
Спасибо)
Здравствуйте, будут ли видео про Koin ?
Пока нет в планах
Не могу понять разницу между com.squareup.okhttp3:okhttp-urlconnection и com.squareup.okhttp3:okhttp
Я тоже...
А где 2 часть? и можно вывести эти данные в RecyclerView, например
Я был в процессе съёмок, но заболел. Это первое видео на доделку как поправлюсь
Вы на видео ускоряете набор кода или реально так быстро печатаете?
Реально так быстро печатаю
В #ТОП!!!!
Спасибо )
Спасибо
Пожалуйста)
Крутяк)
Видео Топ, но я так понял что 2 часть не вышла?
Я начал делать, но, к сожалению, заболел короной. Как только поправлюсь доделаю
@@MobileDeveloper супер, буду ждать. желаю скорейшего выздоровления)))
я могу создать клиент сервак для того чтоб связать ESP8266 и моб приложение ?
используя эту библотеку
1
И что это вам дает?)
@@MobileDeveloper просто люблю так делать) тема интересная, у меня как раз девушка начинает изучать разработку под андроид, полюбопытствуем, что там у вас)
Вот, покажите ей) Может поможет)
Спасибо!
Спасибо !