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

Поділитися
Вставка
  • Опубліковано 14 лип 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. Все что н...
    🔔 подпишитесь на UA-cam-канал: / @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 сегменте пилит качественный контент

  • @TheRedesc
    @TheRedesc 2 роки тому +11

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому +1

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

    • @user-hs9jm2ph1w
      @user-hs9jm2ph1w 2 роки тому +2

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

  • @aldwynconjurer9449
    @aldwynconjurer9449 2 роки тому +4

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @bankai7654
    @bankai7654 Рік тому +1

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

    • @CutCodeRu
      @CutCodeRu  Рік тому

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

  • @user-ie4fs5io2x
    @user-ie4fs5io2x 2 роки тому +1

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

  • @sergeyr3417
    @sergeyr3417 2 роки тому +2

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @user-ke4uc3mg8g
    @user-ke4uc3mg8g 2 роки тому +4

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @alexandr9900
    @alexandr9900 Рік тому +1

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

  • @user-fs8wx5rz1n
    @user-fs8wx5rz1n 2 роки тому +1

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

  • @dprhmk
    @dprhmk 2 роки тому +1

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому +1

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

  • @MrFlip-fu2py
    @MrFlip-fu2py 2 роки тому +1

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

  • @user-cm2wr3op7w
    @user-cm2wr3op7w Рік тому +1

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

    • @CutCodeRu
      @CutCodeRu  Рік тому +1

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

  • @rpy6ocTb
    @rpy6ocTb 2 роки тому +1

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @user-eg9mh5qe6m
    @user-eg9mh5qe6m 2 роки тому +1

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

  • @ilyaslabukarov5959
    @ilyaslabukarov5959 Рік тому +1

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

    • @CutCodeRu
      @CutCodeRu  Рік тому

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

  • @luksik0
    @luksik0 Рік тому +1

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

  • @pravilo_TMB
    @pravilo_TMB 2 роки тому +2

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

  • @user-rz4uf7yp7b
    @user-rz4uf7yp7b 2 роки тому +1

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

  • @user-nf1td4hh7y
    @user-nf1td4hh7y 4 місяці тому

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

    • @CutCodeRu
      @CutCodeRu  3 місяці тому

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

  • @alisher.sabirov
    @alisher.sabirov Рік тому +1

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

  • @flamberkruds7912
    @flamberkruds7912 2 роки тому +1

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @alexandershestakov2914
    @alexandershestakov2914 2 роки тому

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @semdevmaster
    @semdevmaster 2 роки тому +3

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @user-qd6hj2fn4w
    @user-qd6hj2fn4w 2 роки тому +1

    СПАСИБО!

  • @Have476
    @Have476 3 місяці тому

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

  • @MrSfinks13
    @MrSfinks13 Рік тому

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

    • @CutCodeRu
      @CutCodeRu  Рік тому

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

    • @MrSfinks13
      @MrSfinks13 Рік тому

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

  • @user-qw5sd7hf2e
    @user-qw5sd7hf2e 2 роки тому +1

    Спасибо

  • @hanze30
    @hanze30 2 роки тому +1

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

  • @Thunderstormplus
    @Thunderstormplus 2 роки тому

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

  • @nt2548
    @nt2548 2 роки тому +1

    Спасибо 👍

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @user-zi6in5by1p
    @user-zi6in5by1p 2 роки тому +2

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому +1

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

  • @MrSevenZZZ
    @MrSevenZZZ 11 місяців тому

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

  • @GarettNils
    @GarettNils 2 роки тому +2

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

  • @vitaliiche2706
    @vitaliiche2706 2 роки тому +1

    Thanks!

  • @deniss2799
    @deniss2799 Рік тому +1

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

    • @CutCodeRu
      @CutCodeRu  Рік тому

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

  • @user-eq5rm5nh4h
    @user-eq5rm5nh4h 2 роки тому +1

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

  • @user-yf8if2qy5t
    @user-yf8if2qy5t 2 роки тому

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @TakemuraGoro
    @TakemuraGoro Рік тому

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

  • @cristianoprea9247
    @cristianoprea9247 Рік тому

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

    • @CutCodeRu
      @CutCodeRu  Рік тому

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

  • @dontsmoking2128
    @dontsmoking2128 2 роки тому +1

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

  • @user-nk8wq4sx1x
    @user-nk8wq4sx1x Рік тому

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

  • @nikitalyalin7354
    @nikitalyalin7354 2 роки тому

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @user-wd3mi8cp2s
    @user-wd3mi8cp2s 7 місяців тому

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

  • @snikitin32
    @snikitin32 3 місяці тому

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

  • @artem_ib
    @artem_ib 2 роки тому

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

      Недельку

    • @artem_ib
      @artem_ib 2 роки тому

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

  • @bankai7654
    @bankai7654 Рік тому

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

  • @sergeykonov4562
    @sergeykonov4562 2 роки тому +1

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому +1

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

  • @alexandr9900
    @alexandr9900 Рік тому

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

    • @CutCodeRu
      @CutCodeRu  Рік тому

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

  • @sani4051992
    @sani4051992 Рік тому

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

  • @CutCodeRu
    @CutCodeRu  2 роки тому

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

    • @user-vf7pc4tn9z
      @user-vf7pc4tn9z 11 місяців тому

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

  • @BillieBonse
    @BillieBonse Місяць тому

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

  • @itdev4680
    @itdev4680 2 роки тому

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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

  • @fitter2boss72
    @fitter2boss72 5 місяців тому

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

  • @ipdev
    @ipdev 2 роки тому

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

    • @CutCodeRu
      @CutCodeRu  2 роки тому

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