Laravel API. All you need! Json Resource, Resource Collection, Cache, Rate Limit

В сегодняшнем мы изучим web api на Laravel. Подробно рассмотрим как это делать и реализуем простое api с разбивкой на версии, научимся использовать Postman
#api#laravel#cutcode
---------------------------------------------------------------------------------
🚀📹👨‍🏫 Как насчет прокачки своих навыков с помощью наших обучающих видеокурсов по web-разработке? Переходи на мой сайт 👇
learn.cutcode.dev/
❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного - t.me/laravel_chat
🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут - cutcode.ru/chat-bot
---------------------------------------------------------------------------------
⏰ Таймкоды:
00:00 Введение
01:33 Postman и обзор проекта, с которым будем работать
03:30 Корректируем route
06:33 Добавляем контроллер
Всем поклонникам Laravel привет! В эфире Cutcode и сегодня мы затронем тему web api. Сделаем публичные api, чтобы понять все базовые особенности реализации на Laravel, тем самым мы дадим доступ остальным пользователям к данным который мы предоставляем, а api будет интерфейсом для получения этих данных. В наше время web api крайне важен - практически все приложения делаются по концепции api first. Это отдельный проект, а уже далее веб-сайт мобильные приложения и так далее, который взаимодействуют с api и получают нужные данные и работают с ними. Так устроен современный мир, такие приложения получаются более быстрыми, гибкими и их проще поддерживать. Либо api даёт пользователям в открытом либо закрытом доступе получить данные о курсе валют, погоде, состояние своих данных в том или ином сервисе. А вы уже сами решайте как их использовать.
У нас будет простой api, с фантазией у меня не так все хорошо - мы будем хранить историю апдейтов версий Laravel и давать возможность получить текущую последнюю версию. То есть дадим остальным пользователям используя наш api получить данные по версионности Laravel.
Что нас ждет?
1.Сделаем api с разбивкой на версии.
2.Разберемся с ресурсами и ресурс-коллекциями.
3.Добавим кэширование запросов и observer для контроля кэша.
4.Разберемся средь лимитом ограничением на запросы к api.
Ну меньше слов больше практики погнали. Друзья я для тестирования api буду использовать программу postman и вам так же рекомендую. Здесь удобно менять http методы, задавать заголовки, устанавливать параметры, добавлять токен и также отслеживать ответ. Смотреть сколько времени потребовалось на получение ответа и сколько байт он занимает. Поэтому рекомендую использовать postman либо какой-либо другой аналог.
Далее вернемся к нашему Laravel приложению и посмотрим что у нас есть на старте. Я уже создал таблицу version она простая, здесь по факту два необходимых поля - это title, тэг обновления и relise date,то есть дата обновления и наполнил эту таблицу тестовыми данными, исходя из последних апдейтов laravel. Ну и само собой добавил модель для этой таблицы она простая, здесь ничего особенного нет. Друзья прежде чем начать - на что необходимо обратить внимание - на то что в laravel по умолчанию есть api роуты. В директорий routes есть file api.php и здесь уже задам один route пример. Мы его пока что удалим, он нам не потребуется.
---------------------------------------------------------------------------------
📹 делитесь этим видео с друзьями:
• Laravel API. Все что н...
🔔 подпишитесь на KZread-канал: / @cutcoderu
📼 Курс по Laravel с нуля:
• Курс по Laravel 8 обуч...
Laravel API. Все что необходимо! Json Resource, Resource Collection, Cache, Rate Limit
---------------------------------------------------------------------------------
🔗 наш сайт: cutcode.dev/
📷 наш instagram: / cutcoderu
📱 Наш telegram-канал: t.me/laravel_cutcode

Пікірлер: 104

  • @CutCodeRu
    @CutCodeRu8 ай бұрын

    🎁 Для вас есть подарок, забирайте - cutcode.dev/l/4pxn 🎁

  • @inocoweb
    @inocoweb2 жыл бұрын

    Нужно больше про API, целый проект нужен именно про APIшку.

  • @nt2548

    @nt2548

    2 жыл бұрын

    +

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    После нг решим какой проект будем делать

  • @maksimchernyshev6587

    @maksimchernyshev6587

    2 жыл бұрын

    +

  • @score_87

    @score_87

    2 жыл бұрын

    +

  • @Thunderstormplus

    @Thunderstormplus

    2 жыл бұрын

    Согласен!

  • @user-eq5rm5nh4h
    @user-eq5rm5nh4h2 жыл бұрын

    Хорошо что хоть кто-то в RU сегменте пилит качественный контент

  • @aldwynconjurer9449
    @aldwynconjurer94492 жыл бұрын

    Смотрю только второе видео этого автора. Но то что я увидел - уже заслуживает лайка, подписки и комментария. Материал базовый(с того что я смотрел). Подобного в инете есть полно. Но есть одно "НО". Сам материал и его подача весьма деталезированная и разжована до такой степени, что я уже не знаю, как можна всего этого не понять. Так же, хочу отметить, отличную подготовку самого автора, который не просто рассказывает что-то, а понимает что именно он говорит, и зачем это надо. Благодарю!

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Спасибо за приятные слова! Услада для моих ушей и глаз и лучшая мотивация! Спасибо и желаю приятного просмотра!

  • @TheRedesc
    @TheRedesc2 жыл бұрын

    Более-менее серьезный проект api в студию. Все траблы чтобы попали в объектив - сложные связи, фильтрация и сортировка по связным и вычсляемым данным, Корс, и прочая лабуда, разграничение доступа к данным, и т.п.

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    После нг будем делать большой проект но тему выберем вместе, может и api будет

  • @user-hs9jm2ph1w

    @user-hs9jm2ph1w

    2 жыл бұрын

    ну это же просто главное понять что фронт будет отдельно жить от бэка - а что бы еще понятнее было - поднимите докер и там два сервиса один генерирует фронд другой бэк и все а дальше запрос get post только уже на уровне api

  • @user-ke4uc3mg8g
    @user-ke4uc3mg8g2 жыл бұрын

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

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Рад стараться, спасибо за приятные слова!

  • @MrFlip-fu2py
    @MrFlip-fu2py2 жыл бұрын

    Круто, парень молодцом! Спасибо, полезно.

  • @sergeyr3417
    @sergeyr34172 жыл бұрын

    Отличная и полезная инфа. Спасибо вам!

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Спасибо за просмотр!

  • @user-fs8wx5rz1n
    @user-fs8wx5rz1n2 жыл бұрын

    Спасибо за видео, получил ответы на многие вопросы.

  • @user-ie4fs5io2x
    @user-ie4fs5io2x2 жыл бұрын

    Отличное видео, ждем аутентификацию и большой проект.

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

    Огромное спасибо, отличный контент! Лайк, коммент, подписка. )

  • @CutCodeRu

    @CutCodeRu

    Жыл бұрын

    Спасибо! Добро пожаловать!

  • @dprhmk
    @dprhmk2 жыл бұрын

    Спасибо за видео, качество на высоте, приятно смотреть)

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Спасибо за просмотр! Рад стараться!

  • @pravilo_TMB
    @pravilo_TMB2 жыл бұрын

    Благодарю за видео! Было бы здорово осветить различные варианты реализации аутентификации для API

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Будет

  • @user-eg9mh5qe6m
    @user-eg9mh5qe6m2 жыл бұрын

    Круто! Спасибо!

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

    Прежде чем посмотреть лайк по инерции поставлю)

  • @CutCodeRu

    @CutCodeRu

    Жыл бұрын

    Правильный алгоритм хорошего разработчика)

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

    Спасибо! Очень полезно,

  • @vitaliiche2706
    @vitaliiche27062 жыл бұрын

    Thanks!

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    🤝

  • @Have476
    @Have4762 ай бұрын

    Сделайте проект про создание тг бота на ларавель многофункционального, думаю интересно будет с использованием ngrok, telegraph, webhook,защита данных.. сам ищу дельное и в одном месте, желательно видео чтобы было) спасибо за видео

  • @user-rz4uf7yp7b
    @user-rz4uf7yp7b2 жыл бұрын

    Спасибо за видео 👍

  • @user-cm2wr3op7w
    @user-cm2wr3op7w Жыл бұрын

    Спасибо за подробное и четкое объяснение! Очень бы хотелось видео по регистрации и аутентификации через passport(особенно!) и sanctum и дальнейшее использование токенов после регистрации user

  • @CutCodeRu

    @CutCodeRu

    Жыл бұрын

    Скоро будет про passport с реальным проектом

  • @rpy6ocTb
    @rpy6ocTb2 жыл бұрын

    Спасибо за видео, очень полезно! Ждем еще ;)

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    спасибо за просмотр и комментарий! если есть какието вопросы - задавайте!

  • @alisher.sabirov
    @alisher.sabirov Жыл бұрын

    Спасибо, круто)

  • @MrSevenZZZ
    @MrSevenZZZ10 ай бұрын

    Надо заметить что рейт лимит по ip защищает от DoS атак(Denial-of-Service), а не от DDoS атак(Distributed Denial-of-Service), на то они и распределённые. В остальном видео отличное, спасибо.

  • @user-nf1td4hh7y
    @user-nf1td4hh7y3 ай бұрын

    супер, спасибо за вашу работу!

  • @CutCodeRu

    @CutCodeRu

    2 ай бұрын

    спасибо за комментарий!

  • @hanze30
    @hanze302 жыл бұрын

    отличное видео! Автор молодец

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

    Спасибо. Как раз, то, что нужно мне в данный момент. P.S.: Хотелось бы Api Test видео. Не нашёл на Вашем канале (может плохо искал...))) )

  • @CutCodeRu

    @CutCodeRu

    Жыл бұрын

    На канале есть гайд по тестам и http тесты тоже рассматриваются

  • @MrSfinks13

    @MrSfinks13

    Жыл бұрын

    @@CutCodeRu Благодарю. посмотрю.

  • @flamberkruds7912
    @flamberkruds79122 жыл бұрын

    Спасибо за ролик, конечно сумбурно но дает большой толчок куда копать дальше.

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Спасибо за просмотр!

  • @user-zi6in5by1p
    @user-zi6in5by1p2 жыл бұрын

    Спасибо за урок, всё супер ! ) Было бы классно сделать пример работы с sanctum, вроде он везде есть да не кто не показывает )

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Спасибо за просмотр! Sanctum тоже в планах

  • @alexandershestakov2914
    @alexandershestakov29142 жыл бұрын

    Очень доступно! Про JWT уже просил под другим роликом

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Есть в задачах, как дойдет очередь запишу

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

    камент для продвижения

  • @user-qd6hj2fn4w
    @user-qd6hj2fn4w2 жыл бұрын

    СПАСИБО!

  • @GarettNils
    @GarettNils2 жыл бұрын

    Обязательно про аутентификацию нужен ролик.

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Ок, сделаем

  • @user-eq5rm5nh4h
    @user-eq5rm5nh4h2 жыл бұрын

    Жду видео про аунтефикацию

  • @Thunderstormplus
    @Thunderstormplus2 жыл бұрын

    Спасибо, то что надо, я как раз для моб RN!=)

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    👍

  • @TakemuraGoro
    @TakemuraGoro11 ай бұрын

    Спасибо, полезно. Но хотелось бы подробнее про логику ресурсов. Почему он так работает. Схему, кто что вызывает. Почему именно так это происходит, как "думает" ларавель когда получает на входе такие данные. Что делать если у меня коллекция, в коллекции, как надо рассуждать что бы создать правильную цепочку.

  • @nt2548
    @nt25482 жыл бұрын

    Спасибо 👍

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Спасибо за просмотр!

  • @user-qw5sd7hf2e
    @user-qw5sd7hf2e2 жыл бұрын

    Спасибо

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

    Добрый день. Очень нравятся Ваши видео. Расскажите, пожалуйста, о грамотном разбивании приложения на модули, можно также видео о Вашем взгляде на Porto, его плюсы и минусы. Спасибо 😊

  • @CutCodeRu

    @CutCodeRu

    Жыл бұрын

    Подумаю об этом но с porto не знаком

  • @user-nk8wq4sx1x
    @user-nk8wq4sx1x Жыл бұрын

    Любопытно, в целом по верхам понятно. Не раскрыт момент, как снарядить ответ заголовком 'Accept': "application/json" ?

  • @dontsmoking2128
    @dontsmoking21282 жыл бұрын

    смысл в VersionCollection? VersionResource::collection() чем не подходит?

  • @user-yf8if2qy5t
    @user-yf8if2qy5t2 жыл бұрын

    Сними пжл ролик про кеширование Redis, файловое кеширование, когда что лучше применять, и пару примеров. Спасибо за видео!

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Есть в планах но не знаю когда дойдут руки

  • @semdevmaster
    @semdevmaster2 жыл бұрын

    За видео спасибо, всё грамотно и спокойно рассказал - хотелось бы увидеть реализацию с использованием Laravel Octane, чтобы не поднимать весь фреймворк на каждый запрос, а один раз загнать его в память и спокойно работать, для темы API самое оно.

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Спасибо за просмотр, думаю и эту тему затронем

  • @snikitin32
    @snikitin322 ай бұрын

    А зачем observer и такая сложная реализация, если в самой модели в методе boot можно задавать действия для событий модели?

  • @user-wd3mi8cp2s
    @user-wd3mi8cp2s6 ай бұрын

    Скажите пожалуйста, а каким образом обсёрвер понимает что создана новая запись? Опять магия ларавел? Из метода created удаляется "d" ?

  • @nikitalyalin7354
    @nikitalyalin73542 жыл бұрын

    Спасибо! Очень годная инфа. А как быть со сменой версий API ? не стоит ли ресурсы тоже подразделять на версии?

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Будет не лишним

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

    Чем отличается JsonResourse/Collection от response()->json() ? Выглядит так, как будто JsonResourse можно больше настроить под себя

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

    Мне кажется удобнее создавать подпапки с версиями в папке routes

  • @CutCodeRu

    @CutCodeRu

    Жыл бұрын

    Почему бы и нет

  • @artem_ib
    @artem_ib2 жыл бұрын

    Прикольно! Хочу реализовать свой API на Laravel, но пока не могу совсем разобраться на базовом уровне в фреймворке. Скажите, навскидку, много времени потратили на изучение, как всё это работает ?

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Недельку

  • @artem_ib

    @artem_ib

    2 жыл бұрын

    @@CutCodeRu Видимо у вас был увереный старт))

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

    Добрый день! Скажите, а зачем коллекции нужно ссылаться на ресурс если они выполняют по-сути ту же функцию, но только первый для одного объекта, а другой для множества? Если модели нужно знать из какой таблицы она дергает данные, то что дергает коллекция из ресурса? 14:30 - момент Если что то написал не верно - поправьте, пожалуйста.

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

    подскажите пожалуйста, есть ли код по этому уроку на гитхабе?

  • @CutCodeRu

    @CutCodeRu

    Жыл бұрын

    Не выкладывали в те времена код к сожалению

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

    Всех приглашаю в чат CutCode - t.me/laravel_chat . Здесь общаемся и делимся опытом)

  • @user-vf7pc4tn9z

    @user-vf7pc4tn9z

    10 ай бұрын

    расскажи подробнее про rate limited laravel

  • @sergeykonov4562
    @sergeykonov45622 жыл бұрын

    get был, а про post запросы ничего. Было бы интересно увидеть небольшое приложение без фронта. Только с бэком, взаимодействие через АПИ

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Сделаем чуть позже

  • @BillieBonse
    @BillieBonse12 күн бұрын

    как в коллекции поля модифицировать? в ресурсе понятно все, а про коллекцию нет инфы в видосе

  • @itdev4680
    @itdev46802 жыл бұрын

    ресурс коллекция в данном случае лишняя, можно сдеать коллекцию прямо из ресурса, по обсерверу по-хорошему нужно так-же и за updated/deleted следить

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    продемонстрировал наличие

  • @fitter2boss72
    @fitter2boss724 ай бұрын

    Где хоть кака-то валидация и обработка ошибок?

  • @ipdev
    @ipdev2 жыл бұрын

    g = джи. j = джей. получаем JSON = джейсон, никак не джисон

  • @CutCodeRu

    @CutCodeRu

    2 жыл бұрын

    Спасибо, но привычку так произносить побороть будет тяжело(

Келесі