Laravel: Create Public API with Cache and Rate Limits

Поділитися
Вставка
  • Опубліковано 4 жов 2024

КОМЕНТАРІ • 136

  • @MarkKulishov
    @MarkKulishov 3 роки тому +31

    very simple, short, fast and to the point. I really like this video format. When you do the same after the video and it really works! Thank you, Povilas!

  • @bhanukrsingh
    @bhanukrsingh 3 роки тому +13

    I am a wordpress developer, and your videos keeps inspiring me to learn laravel.

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

      it is a no thinker mate, go learn Laravel, start with Laracasts!

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

      @@kickass1179 Yeah, I had Laracasts subscription but it was very difficult with my full time job. Weekends are all I get, but I guess I will have to come up with some strategy to actually find time. These videos keep my interest high.

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

      @@bhanukrsingh Find Coders Tape 5.8 course on UA-cam which is free to start.

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

    It's not useful, it's extremely useful!!
    You talked about a loooot of things!! What an intense and clear tutorial..
    God bless you ..

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

    Fantastic as usual, @8:34 tho. I think you were going to mention Carbon, but you went on to Observers.
    the Cache::remember 2nd argument can be an instance of carbon, Which means you can use *Carbon::today()->endOfDay()* and it will be cached for that exact timeframe. Or you can also use Laravel's today helper: *today()->endOfDay()*

  • @JouvaMoufette
    @JouvaMoufette 3 роки тому +18

    Very useful stuff! Love the use of the Observer pattern to clear the cache. Makes that very simple to handle

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

    I have been studying your Laraval Roadmap for one month. I am really grateful for this.

  • @alimransujon6388
    @alimransujon6388 3 роки тому +3

    Every time I see your video, I learn something new. Watching your videos since 2020. Don’t stop it. Keep up. You are a legend.

  • @danwah
    @danwah 3 роки тому +4

    Great video! For anyone that doesn't know you can make laravel create all the standard API methods, such as index, store, show, create, update and delete when you create a controller by passing in --api flag.
    E.g. PHP artisan make: controller ExampleController --api --model=ExampleModel

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

    the cache and observer thing is new for me. thank you

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

    Thanks for the video, I suggest adding pagination to limit the returned data

  • @СтаниславЧетвериков-з2м

    Спасибо большое) Вроде бы уже сам знаю эту тему, но нюансы очень полезны. Ради нюансов и смотрю каждый день

  • @mhmdomer
    @mhmdomer 3 роки тому +6

    Very informative! thanks, Povilas.
    I think it is a good practice to select only the fields you want from the database, especially if you are getting a big collection " in this case CovidCase::all()", it is better to use "CovidCase::select(['cases', 'report_date'])->get()" to use less memory by loading fewer data to the memory.

    • @LaravelDaily
      @LaravelDaily  3 роки тому +3

      Good catch, thought about it myself when re-watching the video after publishing.

    • @lupanvi
      @lupanvi 3 роки тому

      Using that approach, how could I format the date?

    • @mhmdomer
      @mhmdomer 3 роки тому

      @@lupanvi you can use the same technique used in the video ( using resource class )

    • @lupanvi
      @lupanvi 3 роки тому

      @@mhmdomer ok, but I was thinking without resources, to avoid it

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

      @@lupanvi you can call $case->report_date->format("Y-m-d") on the blade file where you want to render it

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

    this is exactly what im looking for, thank you so much

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

    You are doing great job sir that’s why I purchased your courses to support you.

    • @anthoniG
      @anthoniG 3 роки тому

      Yep same. I am learning so muh useful info. I bought the full subscription.

  • @youngengineer8033
    @youngengineer8033 3 роки тому +1

    Sir you are the best one day i will remind you that.
    Do you remember when u had 66k subscription I told u you are gonna have 1 M subscriber than you will say i dont remember what u said.

  • @phil86_
    @phil86_ 3 роки тому +1

    Great tutorial, as always.
    Showing the use of Postman is also important.

  • @zakariajawas
    @zakariajawas 3 роки тому +1

    Thank you for your time and effort, your topics are always useful

  • @raykudjie2365
    @raykudjie2365 3 роки тому

    I learned something new each time with your videos!

  • @ziakhan-vv9ts
    @ziakhan-vv9ts 2 роки тому

    Very useful in a short video, api, observer,postman, api protection 👍

  • @abdulbasitsalah2918
    @abdulbasitsalah2918 3 роки тому

    the cache was totally new to me, it was very usefull video

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

    Omg so good explained i finally understood many things in a single video. Keep it short 🤘

  • @sumailsasumi1294
    @sumailsasumi1294 3 роки тому

    Its make laravel so powerfull i love it

  • @asimal-tayeb5355
    @asimal-tayeb5355 3 роки тому

    simple, helpful thanx.

  • @kyledoesdev
    @kyledoesdev 6 місяців тому

    super helpful, thank you!

  • @holiqibrahim
    @holiqibrahim 3 роки тому

    I really like your tutorial, very short and easy to understand

  • @juliopeluciofox
    @juliopeluciofox 3 роки тому

    Very helpful your videos Povilas, really like how simple thing are when you explain.

  • @GergelyCsermely
    @GergelyCsermely 3 роки тому +1

    Thanks very interesting again.

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

    Great video, thanks!

  • @emuqatash
    @emuqatash 9 місяців тому

    you are perfect! thank you

  • @bozok1903
    @bozok1903 3 роки тому

    I learn lots of things from you. Thanks a lot.

  • @binodthakur6113
    @binodthakur6113 3 роки тому

    Excellent topic and Insight - always each and every video on Laravel is awesome. Thanks a lot has learned a lot from you. God bless you. Love from India.

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

    Thank you!
    Laravel 😍

  • @kickass1179
    @kickass1179 3 роки тому

    I wish I knew how to implement cashing like this 2 years ago...thanks!

  • @jimishukurow2286
    @jimishukurow2286 3 роки тому

    Royal like from me, to last par of video

  • @LaravelLover
    @LaravelLover 3 роки тому

    Great tips Povilas, Thank you so much for your efforts

  • @Pro-jy3gp
    @Pro-jy3gp Рік тому

    thanks for the code that what i was looking for just issue was you were hiding use Illuminate\Support\Facades\Cache;

  • @shaadishtiaque2084
    @shaadishtiaque2084 3 роки тому

    Thanks for the tutorial.

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

    Really good video as always. Thanks A LOT!

  • @L-A-O-S
    @L-A-O-S 3 роки тому +2

    like a Swiss watch.

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

    fantastic great tutorial

  • @izniburak
    @izniburak 3 роки тому

    Great tutorial! Thanks.

  • @ahmedsaid7190
    @ahmedsaid7190 3 роки тому

    Thank you very much, you are really a great man

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

    Great stuff

  • @dasuneranda
    @dasuneranda 3 роки тому

    Thank you sir

  • @sajadabbasi2268
    @sajadabbasi2268 3 роки тому

    thanks usfull tutorials

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

    very useful thx

  • @slablife
    @slablife 3 роки тому

    Wow, this is gold!

  • @白飯魚-k7w
    @白飯魚-k7w 3 роки тому

    A very useful video thank you

  • @hassanfazeel2354
    @hassanfazeel2354 3 роки тому

    Excellent tip

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

    Exactly what I needed. Thanks for the withoutWrapping() tip and congrats on 100k! Well deserved!

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

    Love this tutorial 🤩

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

    Thanks

  • @larslommen9098
    @larslommen9098 3 роки тому

    Very useful, thanks

  • @alembilic5614
    @alembilic5614 3 роки тому

    Great video keep up with good work

  • @codelaravel
    @codelaravel 3 роки тому

    Well efforts sir. Please make videos series on unit and feature testing in laravel 8
    with different permission by using policy logic

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      I've created some content on unit/feature testing, search the channel: ua-cam.com/channels/TuplgOBi6tJIlesIboymGA.htmlsearch?query=testing
      Also, a separate course: laraveldaily.teachable.com/p/laravel-phpunit-testing-for-beginners
      But that content wasn't very popular, so for now not planning to dive deeper into it.
      You can also check out these examples: twitter.com/PovilasKorop/status/1414579559584968714

  • @belaouraabdelwahab
    @belaouraabdelwahab 3 роки тому

    Thanks a lot great video very useful

  • @webcodingoprogrammingtips2090
    @webcodingoprogrammingtips2090 3 роки тому +1

    Great stats - 945 views, 106 likes, 0 dislikes!

  • @L-A-O-S
    @L-A-O-S 3 роки тому +1

    just in time)

  • @ismoilkirgizov1640
    @ismoilkirgizov1640 3 роки тому

    excellent

  • @vladyslavbondarenko4983
    @vladyslavbondarenko4983 3 роки тому

    Cool explain!

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

    Thanks for the tutorial can you do a tutorial " if a user want to access there dashboard they would provide 4 digit pincode before they can access there dashboard"

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      It's a very edge case. In very rare case you change email/password authentication to something like 4-digit pincode. Not planning to do a tutorial for such rare case.

  • @gssj-o8p
    @gssj-o8p Рік тому

    Thanks a lot for this lesson, really helped me a lot!
    How would you deal with routes that change result based on parameter passed in thr query string? How to cache that?

  • @amitdev1485
    @amitdev1485 3 роки тому

    great videos

  • @thelostrider1
    @thelostrider1 3 роки тому

    Nicee!

  • @AhsanKhan89
    @AhsanKhan89 9 місяців тому +1

    I have defined this rate limit to 1000 in my new Laravel 10 application but I still see Too many requests error after a few requests to the database. I searched a lot but couldn't figure out the issue yet. Are there any new changes in the Laravel 10 API using Sanctum?

  • @mamangboi9303
    @mamangboi9303 3 роки тому

    This usefull

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

    thank you a lot for your time and effort💚❤️
    I was wondering How could you show the name of attributes
    in functions like cache:: forget(keys:"cases");
    how to show that keys as an attr back to the value

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

    cool

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

    Waw 😍🤤

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

    that good

  • @shadmehrbz3931
    @shadmehrbz3931 23 дні тому

    Greatttt

  • @Pro-jy3gp
    @Pro-jy3gp Рік тому

    hey got i quick question i have a API which return the user data base on user id how to cache that api now i am having a small problem
    after following you video i am get same repose if i change id how to solve this

  • @yezperdk
    @yezperdk 3 роки тому

    Related to this topic: Any chance you could make a video about versioning an API?

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      I have it as one of my lessons in the course about API: laraveldaily.teachable.com/courses/how-to-create-laravel-api/lectures/17568998

  • @digitaluniverse9826
    @digitaluniverse9826 3 роки тому

    Hello Mr povilas. This Is a great tutorial. Just a question though.. What if there is one to many Or many to many relationship. How we parse that in collection. Like hiding specific fields from the relationships and formatting dates etc?

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      I guess this is your answer: laravel.com/docs/8.x/eloquent-resources#conditional-relationships

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

    Do you have a tutorial on how admin can suspend a user for some days, before the user will be able to login back to the website

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      Two similar articles:
      laraveldaily.com/how-to-ban-suspend-users-in-laravel-project/
      blog.quickadminpanel.com/3-ways-to-delete-user-in-laravel-block-hide-or-hard-delete/

  • @akshaygadekar9926
    @akshaygadekar9926 3 роки тому

    Won't it be better to put observer in model itself, as putting it in service provider boots it for every unnecessary request

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

    how can i customize the rate limit message ?

  • @TariqSajid
    @TariqSajid 3 роки тому

    can you please make tutorial on how to secure communicate between two micro services ?

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      I don't actively work with micro services, so can't advise on that.

  • @JY-xv7ic
    @JY-xv7ic 3 роки тому

    what happen with throttle middleware?

  • @geneartista9714
    @geneartista9714 3 роки тому

    Does using api resource slows down your apps performance same with including observers ? Isn't it processing a lot before the data is sent to the client 😬

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      I haven't noticed the performance problems with those.

  • @8bitenial313
    @8bitenial313 3 роки тому +1

    I'm getting queries even after storing in cache. Steps unitl 7:40 followed. Why this could be? I'm using file store cache.

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

      double check if you have already cached the query.

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

      @@free2idol1 I wasn't using the cached data as return properly. Thank you.

  • @Константин-л2к3э

    could you advise, is it reasonable to create cache on midel as the database caches all requests itself?

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

      Reasonable because then you are in full control of that cache, on the application level, and may manage that cache in the code. You're not that much in control over when/how database caches things.

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

    Povilas,I want to know is there a way to use MIddleware to know if the same IP is hitting the system too many times that we stop this and show Google Captcha over the page? I want to use RateLimiter but don't know-how

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

      Let me google it for you.
      Googled "Laravel rate limit by ip", found this: hackthestuff.com/article/how-to-limit-number-of-requests-per-ip-address-in-laravel-8

  • @HaroldKimTV
    @HaroldKimTV 3 роки тому

    Question. How di you cache the query in route model bindings? Same with policy
    Ex. function (Covid $covid, Request $req) { … }

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      I've googled and found this: stackoverflow.com/a/66446816

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

      It is not worth the effort to cache the route model binding, as one of the answer from the SO pointed out by Larave Daily, it said "I cant tell how much performance improvement you get for caching one of the simplest queries a db can do (retrieve a record by primary key), but you might also try to cache the complete html contents".

  • @PathOfDamn
    @PathOfDamn 3 роки тому

    So the cache can be used just like this? Do I need to set up drivers or anything such as memcached or redis? Because according to the docs it seem like I need to set something up but I don't see any set up in the video

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      I use default Cache driver, which is "file"

    • @PathOfDamn
      @PathOfDamn 3 роки тому

      @@LaravelDaily Ok, thank you!

  • @xSERENKIx
    @xSERENKIx 3 роки тому

    @Laravel Daily Thanks for your videos, really great work! But i have legacy project by laravel 5.6, laravel-telescope and ray do not work on this version. Can you advise me what to use?

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      Upgrade to Laravel 8. Otherwise you will have more and more things that are not working for you. Including security issues.

    • @xSERENKIx
      @xSERENKIx 3 роки тому

      @@LaravelDaily Yes, I absolutely agree with you, this is my long term issue. But now I really need to work with this version. Thanks for your reply.

  • @abdelwahabs.301
    @abdelwahabs.301 3 роки тому

    Hi and thanks for this video.
    My question is if I want to make an API for a mobile app (using sanctum), and in the same time I will create a web app for this project, which is the best way to do that ? In order to stay in DRY principal. And let's assume that I am not comfortable with front-end framework like Vue or React and I want to use web and api routes files, how can I extract the common code used in both controllers (in web and api). I wish it's clear , thank you a lot.

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      It's not a question that I could answer in a short UA-cam comment, will need to make a full project with a video about it. Maybe in the future.

    • @abdelwahabs.301
      @abdelwahabs.301 3 роки тому

      @@LaravelDaily yes it will be good, I appreciate thanks

  • @maximilianominetto524
    @maximilianominetto524 3 роки тому

    How to customize the message of rate limit?

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      From the official docs:
      RateLimiter::for('global', function (Request $request) {
      return Limit::perMinute(1000)->response(function () {
      return response('Custom response...', 429);
      });
      });
      laravel.com/docs/8.x/routing#defining-rate-limiters

    • @maximilianominetto524
      @maximilianominetto524 3 роки тому

      @@LaravelDaily Thanks, it wasn't difficult.

  • @lordgodgiven
    @lordgodgiven 3 роки тому

    Hello,
    Thanks your video, i've a question it's possible to add a parameter such a date interval in a route resource, i'm using laravel 8.
    Thanks

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      No, Route Resource is a set of routes, not a single route, so you can't add a parameter to all of the routes.

    • @lordgodgiven
      @lordgodgiven 3 роки тому

      @@LaravelDaily thanks for your replay, it's possible to store parameters in session and use it in eloquent?

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      Yes, similar like here: ua-cam.com/video/PanSES2v2gk/v-deo.html

    • @lordgodgiven
      @lordgodgiven 3 роки тому

      @@LaravelDaily thanks

  • @edhamrabuan8988
    @edhamrabuan8988 3 роки тому +1

    Never learn this things in college🤣

  • @menma977
    @menma977 3 роки тому

    You have any tutorial to make api public key ? Im curious..

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      Sorry I don't understand what exactly do you mean by "api public key". Key for what? For what type of usage?

    • @menma977
      @menma977 3 роки тому +1

      @@LaravelDaily such as websites that provide api tokens to be accessed by other users to build their own applications . sorry if my explanation is confusing

    • @LaravelDaily
      @LaravelDaily  3 роки тому

      Ok I understand now. Well, I would use something like this: laravel.com/docs/8.x/sanctum#api-token-authentication

    • @menma977
      @menma977 3 роки тому

      @@LaravelDaily does that mean it's only separated by the name of the token itself, sorry because I'm just about to try Sanctum because before I always used a passport. and in your course do you teach to make laravel pusher ? , because I've tried to use laravel pusher. to take care of it takes extra time maybe because my coding is not correct.
      by the way thank you for the response sir

    • @LaravelDaily
      @LaravelDaily  3 роки тому +1

      No, I don't have courses about Pusher yet.
      And for Sanctum, this is not a question I can answer in a short comment, please try it out yourself.