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

Поделиться
HTML-код
  • Опубликовано: 11 июл 2024
  • В сегодняшнем мы изучим 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. Все что н...
    🔔 подпишитесь на RUclips-канал: / @cutcoderu
    📼 Курс по Laravel с нуля:
    • Курс по Laravel 8 обуч...
    Laravel API. Все что необходимо! Json Resource, Resource Collection, Cache, Rate Limit
    ---------------------------------------------------------------------------------
    🔗 наш сайт: cutcode.dev/
    📷 наш instagram: / cutcoderu
    📱 Наш telegram-канал: t.me/laravel_cutcode

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

  • @CutCodeRu
    @CutCodeRu  9 месяцев назад

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

  • @inocoweb
    @inocoweb 2 года назад +47

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

  • @user-eq5rm5nh4h
    @user-eq5rm5nh4h 2 года назад +13

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

  • @user-ie4fs5io2x
    @user-ie4fs5io2x 2 года назад +1

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

  • @user-fs8wx5rz1n
    @user-fs8wx5rz1n 2 года назад +1

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

  • @aldwynconjurer9449
    @aldwynconjurer9449 2 года назад +4

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

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

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

  • @MrFlip-fu2py
    @MrFlip-fu2py 2 года назад +1

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

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

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

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

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

  • @user-ke4uc3mg8g
    @user-ke4uc3mg8g 2 года назад +4

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

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

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

  • @luksik0
    @luksik0 Год назад +1

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

  • @user-eg9mh5qe6m
    @user-eg9mh5qe6m 2 года назад +1

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

  • @TheRedesc
    @TheRedesc 2 года назад +11

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

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

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

    • @user-hs9jm2ph1w
      @user-hs9jm2ph1w 2 года назад +2

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

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

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

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

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

  • @user-rz4uf7yp7b
    @user-rz4uf7yp7b 2 года назад +1

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

  • @sergeyr3417
    @sergeyr3417 2 года назад +2

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

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

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

  • @alisher.sabirov
    @alisher.sabirov Год назад +1

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

  • @ilyaslabukarov5959
    @ilyaslabukarov5959 Год назад +1

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

    • @CutCodeRu
      @CutCodeRu  Год назад

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

  • @user-nf1td4hh7y
    @user-nf1td4hh7y 4 месяца назад

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

    • @CutCodeRu
      @CutCodeRu  3 месяца назад

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

  • @user-qd6hj2fn4w
    @user-qd6hj2fn4w 2 года назад +1

    СПАСИБО!

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

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

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

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

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

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

  • @bankai7654
    @bankai7654 Год назад +1

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

    • @CutCodeRu
      @CutCodeRu  Год назад

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

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

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

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

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

  • @pravilo_TMB
    @pravilo_TMB 2 года назад +2

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

  • @user-cm2wr3op7w
    @user-cm2wr3op7w Год назад +1

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

    • @CutCodeRu
      @CutCodeRu  Год назад +1

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

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

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

  • @user-qw5sd7hf2e
    @user-qw5sd7hf2e 2 года назад +1

    Спасибо

  • @MrSevenZZZ
    @MrSevenZZZ 11 месяцев назад

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

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

    Спасибо 👍

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

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

  • @user-zi6in5by1p
    @user-zi6in5by1p 2 года назад +2

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

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

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

  • @MrSfinks13
    @MrSfinks13 Год назад

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

    • @CutCodeRu
      @CutCodeRu  Год назад

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

    • @MrSfinks13
      @MrSfinks13 Год назад

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

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

    Thanks!

  • @Have476
    @Have476 3 месяца назад

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

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

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

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

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

  • @user-eq5rm5nh4h
    @user-eq5rm5nh4h 2 года назад +1

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

  • @deniss2799
    @deniss2799 Год назад +1

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

    • @CutCodeRu
      @CutCodeRu  Год назад

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

  • @alexandr9900
    @alexandr9900 Год назад +1

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

  • @GarettNils
    @GarettNils 2 года назад +2

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

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

      Ок, сделаем

  • @user-yf8if2qy5t
    @user-yf8if2qy5t 2 года назад

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

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

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

  • @user-nk8wq4sx1x
    @user-nk8wq4sx1x Год назад

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

  • @TakemuraGoro
    @TakemuraGoro Год назад

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

  • @user-wd3mi8cp2s
    @user-wd3mi8cp2s 7 месяцев назад

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

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

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

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

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

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

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

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

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

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

      Недельку

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

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

  • @cristianoprea9247
    @cristianoprea9247 Год назад

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

    • @CutCodeRu
      @CutCodeRu  Год назад

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

  • @snikitin32
    @snikitin32 3 месяца назад

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

  • @bankai7654
    @bankai7654 Год назад

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

  • @sani4051992
    @sani4051992 Год назад

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

  • @alexandr9900
    @alexandr9900 Год назад

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

    • @CutCodeRu
      @CutCodeRu  Год назад

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

  • @CutCodeRu
    @CutCodeRu  Год назад

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

    • @user-vf7pc4tn9z
      @user-vf7pc4tn9z 11 месяцев назад

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

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

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

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

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

  • @BillieBonse
    @BillieBonse Месяц назад

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

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

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

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

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

  • @fitter2boss72
    @fitter2boss72 5 месяцев назад

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

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

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

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

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