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