DEV Community

Khushi Patel
Khushi Patel

Posted on

Types of Middleware: The Different Flavors 😋

After reading last post let's see types of middleware in ExpressJs ,Middleware comes in different flavours(😛), each serving a unique purpose

flavour

1. Application-level Middleware: This is like the main ingredient. You add it to your whole application, and it runs on every request.🫡



app.use((req, res, next) => {
    console.log('This runs on every request!');
    next();
});


Enter fullscreen mode Exit fullscreen mode

2. Router-level Middleware: This is more like a specialty topping. It’s used for specific routes or groups of routes.🤓



const router = express.Router();
router.use('/special', (req, res, next) => {
    console.log('Special route middleware!');
    next();
});


Enter fullscreen mode Exit fullscreen mode

3. Built-in Middleware: These are like pre-made sauces that come with Express, such as express.json() for parsing JSON. 😌



app.use(express.json());


Enter fullscreen mode Exit fullscreen mode

4. Error-handling Middleware: This is the chef’s secret weapon. It catches any errors and serves up a custom response. 😎



app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('Something broke!');
});


Enter fullscreen mode Exit fullscreen mode

The Power of Composing Middleware 🫱🏻‍🫲🏽

One of the coolest things about middleware is that you can stack them together to create complex workflows. Each middleware function can either end the request-response cycle or pass control to the next function using next(). This makes it easy to add features like authentication, logging, error handling, and more—just like adding layers to your sandwich.
Here’s how you might use middleware to protect a route:



const authenticate = (req, res, next) => {
    if (req.isAuthenticated()) {
        return next();
    }
    res.redirect('/login');
};

app.get('/dashboard', authenticate, (req, res) => {
    res.send('Welcome to your dashboard!');
});



Enter fullscreen mode Exit fullscreen mode

In this example, the authenticate middleware checks if the user is authenticated before allowing them to access the dashboard.

*Conclusion: Middleware Mastery 👩🏻‍🍳 *
Middleware is truly the secret sauce of Express.js, adding layers of functionality to your Node.js applications. Whether you’re handling requests, managing responses, or catching errors, mastering middleware will make your code cleaner, more organised, and a lot more powerful.

So next time you’re building an Express.js app, think about the flavors you can add with middleware. Mix, match, and create your own secret sauce—it’s what makes your application uniquely yours!

Happy C̶o̶o̶k̶i̶n̶g̶ Coding! 🫶🏻

Top comments (14)

Collapse
 
aaditya_vikram profile image
Aaditya Vikram

Absolutely loved this post! 🙌

The way you compared the different types of middleware in Express.js to flavors and ingredients really made the concept come alive! 🍴 The analogy of middleware as layers in a sandwich or secret sauces in cooking is a perfect way to explain how middleware works in Express—especially for those who might be newer to the framework.

I particularly liked how you broke down the different types like application-level, router-level, and error-handling middleware with relatable examples. It makes understanding and implementing them so much easier! The section on composing middleware really highlights how powerful Express.js can be when it comes to creating flexible and reusable code. It feels like you've truly mastered the art of making middleware fun and approachable. 👩🏻‍🍳

Looking forward to more of your insightful and engaging posts! Keep up the amazing work! 🚀

Collapse
 
khushindpatel profile image
Khushi Patel

Sure @aaditya_vikram Stay connected ! 🙌🏻

Collapse
 
margish288 profile image
Margish Patel • Edited

Such a informative blog🔥

Collapse
 
muhammad_shamsparacha_94 profile image
Muhammad Shams Paracha

Khushi Patel ! This was really a difficult part for me. But your valuable sauce solved my problem 😊

Collapse
 
khushindpatel profile image
Khushi Patel

I am glad to here that this helps you

Collapse
 
muhammad_shamsparacha_94 profile image
Muhammad Shams Paracha

I am actually beginner in MERN stack and i just learn new concepts. if i need your help please guide me... thanks

Collapse
 
khushindpatel profile image
Khushi Patel

I am coder by passion and creative by heart ! 💓🫣

Collapse
 
prashantnirgun profile image
Prashant Nirgun

मैडम जान बुझ कर आप को समझे और विदेशी ना समझे इस लिए हिंदी में लिख रहे है। ये सैंडीविच की रेसिपी को लेकर जो ज्ञान पेल रही हो ये तो हर जगह पर्याप्त मात्रा में उपलब्ध है । दो पोस्ट पढ़ने के बाद डेवलपर के हाथ में क्या है ।

Collapse
 
codejourney profile image
Info Comment hidden by post author - thread only accessible via permalink
Ashish Vaghela

Great efforts 🙌
During formatting (conclusion part) AI did some mistake (markup related)

Collapse
 
khushindpatel profile image
Khushi Patel

Which mistake?

Collapse
 
aaditya_vikram profile image
Info Comment hidden by post author - thread only accessible via permalink

Conclusion: Middleware Mastery 👩🏻‍🍳 *
He is saying that remove these asterisk sign (
) from Conclusion heading.
That's all.

 
codejourney profile image
Info Comment hidden by post author - thread only accessible via permalink
Ashish Vaghela

hahaha
because most of these GPT or LLM's gives output in markdown format

Collapse
 
codejourney profile image
Ashish Vaghela

*Conclusion: Middleware Mastery 👩🏻‍🍳 *

AI (Probably ChatGPT gives output in markdown format
so this title was supposed to be in bold format.

however you're helping many devs by sharing such valuable information
keep in up.

Collapse
 
hanzla-baig profile image
Hanzla Baig

👍👍👍👍

Some comments have been hidden by the post's author - find out more