What is Express middleware and how does it work? (in-depth)

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

КОМЕНТАРІ • 184

  • @mykalimba
    @mykalimba 4 роки тому +27

    Note to everyone watching: if you ever see your browser spin-waiting as seen in some points in this video, that's usually an indication that the app isn't completing a path through your middleware or route handlers. Sometimes it's a missing call to next(), like shown here. Sometimes there's a code path through a route handler that doesn't call a res.end(), res.json(), or res.whatever().

    • @Dev-tf2bx
      @Dev-tf2bx 6 місяців тому

      yeah .. learned that hard way ! (took me a week to figure out )

  • @MichaelMooregrownman
    @MichaelMooregrownman 4 роки тому +49

    Great video! You may be one of the few that totally explains Express middleware. Also I agree that understanding middleware will help make you a better Express Developer. I feel like a better Express Dev already

    • @NewHorizon-v9p
      @NewHorizon-v9p 4 роки тому +1

      sure , because express itself build on 2 concepts first is middleware function second is callback functions . if you comfortable with these concepts so you good to go

  • @slow_start
    @slow_start 4 роки тому +19

    Zach! Brotha! You have single-handedly demystified everything surrounding Express and Passport for me. Something literally every major js tutorial youtuber has failed to do. So glad I found you man, thanks again. Subbed.

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

    One of the few tutorial makers who create understandable ones. You deserve more views.

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

    I have been trying to understand middleware concept ,watched several tutorial ,this explains everything perfectly and all my doubt cleared.its the best explanation on UA-cam after watching all explanation on middleware

  • @sadhucat4476
    @sadhucat4476 4 роки тому +15

    Such understandable explanations. I love that he fully explains how and why things work.

  • @josphatoluoch5205
    @josphatoluoch5205 4 роки тому +1

    I am at 12:17 but already liking it. Thank a lot Zach for the good explanations.

  • @bunnybloods768
    @bunnybloods768 4 роки тому +1

    This is the only video in youtube that you can easily understand what is middleware is

  • @armaandhanji2112
    @armaandhanji2112 4 роки тому +7

    Really appreciate the longer videos like these that really dig into the details. Thanks again so much! Subscribed.

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

    I like your teaching very much! it is clear, calm. thank you so much, I've learnt a lot from you

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

    The guy just gives concepts, rather than giving "how to do this" or "how to do that" tutorials.... Love from Pakistan

  • @rizgamingvids
    @rizgamingvids 4 роки тому +6

    Thank you very much for helping to understand the middlewares in express. I have been confusing in understanding the middlewares since last a couple of months and today you helped me to understand this concept very well. Thank you again.

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

    Bro I've watched so many videos on Express middleware and NONE of them covers the concepts like you do. They are all just spitting out code without explaining WHY things work the way they do. I found the error handling and next() explanations extremely helpful.
    Thank you!

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

      Nice, that’s definitely the goal of this channel. I want to show 1) why something works and 2) how I figured it out. Glad to hear you’re getting that out of it!!

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

    After reading/watching from multiple sources, finally someone who teaches this concept in a way that I get it!!!! Thanks Zach!!! Your teaching abilities are amazing!!! Props!!!!

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

    I've watched several videos explaining express.js...and this video is the most clear and informative one for me. Thank you so much :D

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

    Thank you very much for the time and effort you invest into making these videos. They are high quality, and you're the first developer on UA-cam I've actually seen explain these things. Thanks again.

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

      You're very welcome!

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

    This is the best resource for understanding Express middleware on the whole internet

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

    I dont know how u cleared my doubts that i have been confusing my myself with......but yaah...ur magic worked....hatsoff mann.....love from India ❤️

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

    Great job! The one thing that I still haven't seen demonstrated in any of these Express middleware videos is content negotiation, something that can return an error too, such as a 406 or a 415.

  • @sidarjunful
    @sidarjunful 4 роки тому +1

    Wow excellent explanation of the topic. I have been scratching my head since last week. searching all over the internet to find a simple explanation of node. express and server, but explanations over the internet are filled with jargons that only experienced developers can understand. Keep sharing such type of excellent content, it means a lot for people like me. Liked and Subscribed.

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

    This is perfect!
    I subscribed immediately after the first 5 minutes of this video. He explained everything in detail.
    Thanks for this great video.

  • @Hayden-ws7ru
    @Hayden-ws7ru Рік тому

    Before this series I was dumb enough to not know, what I didn't know. Absolute legendary explanations, thank you very much!

  • @chidibede2417
    @chidibede2417 4 роки тому

    Wowww, I have been working with middlewares without actually understanding it in such details...THANK YOU!!!!!!!!!! My Computer Professor I never had

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

    it was an wonderful explanation. I've been struggling all day today to understand this, you made it so simple. I could finally connect al lthe dots.Thankyou so much

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

    Bro! I am very thankful for this video, not just because such a video is available because of you, but also the time you took to explain everything seamlessly.

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

    This is the best video I ever watched. despite watching so many videos I lost my head on learning middleware but you have cleared all my doubts. I am your permanent sub now.

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

      Glad it was the video that clicked :)

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

    This video is gold. Definitely came away knowing so much more about middleware. Thanks for explaining it so well.

  • @ukasz6770
    @ukasz6770 4 роки тому +1

    Wow! never thought I could understand this in one video. Definitely subscribing!

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

    waiting for such detailed explanation from a long time, my quest is finally over !

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

    Amazing! It should be the first thing to understand and master, congrats Zach!

  • @lukemuga434
    @lukemuga434 4 роки тому

    Wow!!! Now this is an in-depth guide to express middleware.

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

    Really great video! I have been using middleware already but after just simply watching this video I feel like I truly have an understanding of how they work.

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

    WOW, Thank you Zach! I love seeing the new group of instructors, they are really good! I am a new subscriber now, I hope more people discover your channel! The only feedback I have, is I think your volume should be a little higher. I heard it fine, but I had to put up the volume to its highest level on the video itself and my laptop and it was perfect, but I was in a quiet room, other than that it was great. I am going to checkout the Passport videos next!

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

    man you are a phenomenal
    after tons of videos I've watched
    you explain the topic in 30 minutes and add on them the whole express framework
    keep up your great work. wish to you all the best ❤🤟

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

    Damn thank you so much man. I just recently started learning about the backend of things, specifically I just started with Express.js and man, this definitely is a bit more difficult than I anticipated. The middleware concept had me initially so confused. But I just finished this entire video and saw your UA-cam Header Image, I definitely must say, after watching this video, this hard concept has FINALLY clicked 😄 Thank you so much man! Overall I think you delivered this extremely well. The general pace and simple examples with thorough explanations really add value.

  • @luunguyenphat9399
    @luunguyenphat9399 4 роки тому

    You're doing a very good job. I have skimmed through your videos in this video's playlist, at first, I supposed that I already knew it, but your explanation makes me clearer understood. However, I have to increase the video play speed to 1.5x. Last word, thanks! :D

    • @zachgoll
      @zachgoll  4 роки тому

      Awesome! Glad you got some value in them. Can totally understand the 1.5x speed; I do that on most UA-cam programming tutorials too 😁

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

    Zach..Brother....!! Under 10k subscribers for this channel, unbelievable . I just don't understand this world sometimes. You solve mysteries like none other!!

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

      Really appreciate it, we’re almost there though!!

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

    Yeeaaah finally i get a great explanation about Express middleware , no boring ! Thanks a lot Mr.Zach

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

    Something that's really important, and that you didn't mention in this tutorial, is that next() is like a recursive function call, in that it also `unwraps` (unless a later middleware `return`s before it gets a chance to)... What I mean by that is, any code you have that's placed AFTER the next() statement will be run once the last middleware has been reached.
    Pseudo code example:
    middleware1
    log(1)
    next()
    log(2)
    middleware2
    log(3)
    Would result in:
    1
    3
    2
    Being logged.

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

      Yep that’s a great one! Definitely have to be careful with that, I generally throw a return statement before calling next() if there’s code that comes after it that I don’t want to run

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

    This was excellent, a very clear and understandable explanation. I'm in my 2nd year of a degree with 2/3 computer science classes. One of the classes I've been studying since October has had me writing and extending a couple (a bookshop which we extended fortnightly for 6 months and a nutritional app/recipe builder) of Node/Express apps which serve ejs templates and also serve as APIs for database operations (experimented with MongoDB & mySQL on different assignments). I've got good scores all year but haven't properly understood middleware until now.

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

      I can totally relate! Glad to see you’re taking the initiative to seek knowledge outside of the classroom-it really goes a long way!!

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

      ​@@zachgoll I came across your channel tying to figure out session management for another university project. I have a Vue app hosted on Heroku (served by an Express instance) and it uses an Express API I wrote for db (MySQL) operations, which is CORS configured to accept HTTP requests from the Vue app and is hosted on a virtual machine on my university departmental server. Hopefully I'll slowly figure it out from your Passport authentication series. These videos are great, thanks for the time you've clearly put into creating them

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

      In addition, I'd also keep an eye on my #fullstackroadmap series. I will be covering these topics over the next couple of weeks through building an E-Commerce app. Here's the playlist - ua-cam.com/video/ZZJT5uskuvI/v-deo.html

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

      @@zachgoll Thanks, I expect I'll check those out at some point in future. Just had a quick look at what's in the playlist and by the time you get to session management, it might be too late for my purposes. But I reckon i'll figure it out from your Node/Passport auth series

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

    Myself using Node JS and Express pretty extensively but your video given a great insight specially on express middlewares, for sure this will help me to optimize my code..great work dude cheers and gud luck with your future videos once again great stuff:-)

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

    Simple as that. loved the explanation and going to watch remaining parts instead of a course which I actually bought. Thanks man.

  • @evilservo
    @evilservo 4 роки тому

    Awesome job, finally someone taught me the REAL basic to build my castle of express upon, THANKS A LOT, no mattter how much I thank you it will never be enough

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

    Superb .. I know what is middleware earlier .. they are good as well .. but yours is deep .. loved it

  • @helmialfathseptiana6383
    @helmialfathseptiana6383 4 роки тому

    I wish u always keep sharing stuff like this, so fundamental, the series is gold ! thx

  • @JohnCamden
    @JohnCamden 4 роки тому +1

    Very helpful. This whole series is great.

  • @TakshvysDad
    @TakshvysDad 4 роки тому

    So much detailed explanation . Blessed to come across your tutorial. Great job. Please keep posting like this. You are going to take over the express tutorial.

  • @aghahasaan
    @aghahasaan 4 роки тому

    Thank you so much, I was so confused until today that I switched to long polling for my chat app just cause I didn't really get the real flowcharts although my socket io application is working just fine.. this is the best tutorial on this topic and explains everything that is required, others use too many middlewares or middlewares along with templating engines and other cool technologies..

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

    A very brain friendly explanation, keep up the good work

  • @huckbit
    @huckbit 4 роки тому +1

    Magic! Thank you very much for this video Zach !!! Your channel is awesome. Thank you for all your videos.

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

    Great Video. I would be thrilled if you come up with a video of CRUD using MERN and clean architecture.

  • @BernardoGuerreiro-d8m
    @BernardoGuerreiro-d8m 10 місяців тому

    The error handling part was amazing. Thanksss

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

    This guy really deserve to be noticed by "so called" developer community on UA-cam

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

    This is a great series Zach. Thank you so much for the effort! It's really high quality and useful. =)

  • @donaldjr.labajo5687
    @donaldjr.labajo5687 4 роки тому

    This sir, is by far the best explanation I have ever seen since I started learning programming. Thank you x3000!

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

    Simply Superb Zach. Very clear explanation. Just Subscribed.

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

    Yup, I'm in love lol thanks for series, it's a masterpiece. Appreciate you man

  • @TakshvysDad
    @TakshvysDad 4 роки тому

    So much detailed explaining . Blessed to come across your tutorial. Great job. Please keep posting like this.

  • @diegor5805
    @diegor5805 4 роки тому +1

    I really needed this video. It clears up so many questions!

  • @TheDJARCHY
    @TheDJARCHY 4 роки тому +1

    This is so great... Can you do a part 2 about testing those middlewares??

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

      Like unit testing?

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

    Absolutely brilliant. You are a great teacher, very clear and easy to understand. Keep it up.

  • @valikonen
    @valikonen 4 роки тому +1

    Amazing tutorial, thanks and I hope to get more like this about Node. Maybe how to use node with typescript or how to use i18n and so on :)

    • @zachgoll
      @zachgoll  4 роки тому +1

      I’m making a full stack web dev series as we speak! More Node tutorials coming your way soon 😎

  • @farlight6044
    @farlight6044 4 роки тому +1

    Great video
    It's very clear and informative
    Thanks!

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

    this tutorial is sooo goood
    detailed, easy to understand
    and generous

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

    The explanations are very very good and to the point. Loved it

  • @imarpit007
    @imarpit007 4 роки тому +1

    Very nice tutorial. A lot of things to learn and this video will definitely help you.

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

    Great video! Just one doubt that I had, Acc to node request object are Read-Only Streams so how can we modify them?

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

    Fantastic explanation! Now I have a much better understanding when it comes to what happens when I app.use() libraries like bodyParser, Helmet, Cors and so on...

  • @code-of-duty
    @code-of-duty 4 роки тому +1

    Nicest thing i have ever seen for express

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

    you got a talent for explaining, keep it up brodie

  • @lorocongarrote
    @lorocongarrote 4 роки тому

    unrated tutorials, no way this is a free course, thanks!

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

    One of the best explanations out there. Thank you for doing this!

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

    Really good. This is what I was looking for. many thanks Zach

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

    Very concise and to the point video !!! Great one ...

  • @hercules3484
    @hercules3484 4 роки тому +1

    Very much needed video. Thank you very much.

  • @jamilkabir3168
    @jamilkabir3168 4 роки тому

    You’re so good at explaining! Please keep making videos. Thanks!

  • @Lysiak.Yevhenii
    @Lysiak.Yevhenii Рік тому

    Awesome video ! Thanks ! I believe good to have schema (picture) of order of the execution for that but I didn't find any yet.

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

    Best Video on Middleware. Thank you so much for this video

  • @iben1195
    @iben1195 4 роки тому +1

    I feel like an express guru right now 🤗

  • @kidschannel2473
    @kidschannel2473 4 роки тому

    This is nothing but best, who tf will even dislike this video?

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

    you are best ,,, you have explained all basic in one video thanks

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

    Great, you provided timeless knowledge!!!

  • @9gager87
    @9gager87 4 роки тому +1

    Great video, thank you so much! Keep making these videos!

  • @johnyanastacio1107
    @johnyanastacio1107 4 роки тому +1

    Thank you brother, this series is helping me so much...

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

    Hi Zach, hope you're doing well. I just had a question, when you defined the customproperty variable in middleware 1, how did middleware 2 get it's value without having any link to middleware 1??

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

    Loved this!!!
    Underrated video for sure

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

    how express know that it's an error middleware? and not skip it. is it because it's the last middleware in the chain? but what if we have many error handlers ?

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

    Thanks so much for this awesome explanation Zach. This helped me alot

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

    Really great explanation with examples. Thank you so much.
    Still I have a small question: why I can't use arrow function to define middleware. Like instead function middleare1(req, res, next) , when writing this -> const middleware1 = (req, res, next) => {} , getting reference error.

  • @michelbouchet3605
    @michelbouchet3605 4 роки тому +1

    That's a very nice tutorial. Thank you!

  • @rajashekhar433
    @rajashekhar433 4 роки тому +1

    Thanks for the video 😊

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

    excellent one of the best if not the best! Thank you Zach!

  • @monkeystylle
    @monkeystylle 4 роки тому

    thank you, this makes me understand express a lot better..

  • @mykalimba
    @mykalimba 4 роки тому

    How does express know that a function is supposed to be used as an error handler? Since the call to app.use(errorHandler) is essentially the same as app.use(someOtherMiddleware), how would it know which one is the error handler? Maybe it examines the function signature and says "oh, this function has 4 parameters so it must be an error handler"?

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

      That's exactly it. If the function has 4 parameters, it knows that its an error-handling middleware. The order of the parameters also matters, so it knows that if the function has 4 parameters, the first parameter is the error.
      2 parameters = req & res
      3 parameters = req, res & next
      4 parameters = err, req, res & next

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

      @@vishsingh7235so, I think this is an example of method overloading? Different number of parameters means different method signatures means different functionality? Correct?

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

    This is super clear and useful, thank you!

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

    correction: it is really important to catch any error to prevent it from crashing the server, but using express error handler middleware is optional.

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

    OMG I felt like I will never understand it, thank you so much

  • @ecofriend93
    @ecofriend93 4 роки тому +1

    This is great! Thanks a bunch!

  • @sayonarasun1577
    @sayonarasun1577 4 роки тому +1

    great explanation. thanks a lot mate!

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

    Zach! Super thanx from Denmark, it helps so much!! ;