After reading last post let's see types of middleware in ExpressJs ,Middleware comes in different flavours(😛), each serving a unique purpose
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();
});
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();
});
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());
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!');
});
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!');
});
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)
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! 🚀
Sure @aaditya_vikram Stay connected ! 🙌🏻
Such a informative blog🔥
Khushi Patel ! This was really a difficult part for me. But your valuable sauce solved my problem 😊
I am glad to here that this helps you
I am actually beginner in MERN stack and i just learn new concepts. if i need your help please guide me... thanks
I am coder by passion and creative by heart ! 💓🫣
मैडम जान बुझ कर आप को समझे और विदेशी ना समझे इस लिए हिंदी में लिख रहे है। ये सैंडीविच की रेसिपी को लेकर जो ज्ञान पेल रही हो ये तो हर जगह पर्याप्त मात्रा में उपलब्ध है । दो पोस्ट पढ़ने के बाद डेवलपर के हाथ में क्या है ।
Great efforts 🙌
During formatting (conclusion part) AI did some mistake (markup related)
Which mistake?
hahaha
because most of these GPT or LLM's gives output in markdown format
*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.
👍👍👍👍
Some comments have been hidden by the post's author - find out more