Middlewares in expressjs
basic · Express.js — Web APIs & middleware
Middleware is the "heart" of how Express applications function. It acts as a series of checks and balances that every request must pass through before reaching your final logic . Express Middleware: Theory and Execution 1. The Core Theory: The Request-Response Cycle Theory: Middleware functions are the "middlemen" of your application . They have full access to the request object ( req ), the response object ( res ), and the next() function . The Chain: Middleware creates a chain of execution . If a middleware does not call next() , the request is "trapped," and the server will never send a response to the client . Modification: Middleware can modify the req object, which is how we pass information (like a logged-in user's ID) from an authentication check to a controller . 2. The Five Types of Middleware 1. Application-Level Middleware Theory: These are global filters that run for every single request made to your server, regardless of the URL . Use Case: Logging every request or checking if the server is in "Maintenance Mode" . app.use((req, res, next) => { console.log('Global middleware triggered');[cite: 1] next(); // Required to move to the next step }); 3. Built-in Middleware Theory: Express comes with native tools to handle common tasks like parsing data . Process: Without express.json() , your req.body would be undefined when a user sends data from a React form . app.use(express.json()); // Essential for MERN stack communication 4. Third-Party Middleware Theory: The Node community provides libraries for complex tasks like security and logging . CORS: Essential for allowing your React frontend (on port 3000) to talk to your Node backend (on port 5000) . const cors = require('cors');[cite: 1] app.use(cors());[cite: 1] 5. Error-Handling Middleware Theory: This is a special "Safety Net" that only runs when something goes wrong . The 4-Parameter Rule: Unlike other middleware, this must take four arguments: (err, req, res, next) . Express uses the presence of that fourth parameter to identify it as an error handler . app.use((err, req, res, next) => { console.error(err.stack);[cite: 1] res.status(500).json({ success: false, error: err.message });[cite: 1] }); Example: The Blocking Middleware (The "Guard") Theory: If a middleware detects an issue (like a missing token), it can terminate the cycle by sending a response directly, preventing the request from ever reaching the "expensive" database logic . const blockAdmin = (req, res, next) => { if (req.user.role !== 'admin') { return res.status(403).json({ message: 'Blocked: Admins only' });[cite: 1] } next(); // Only admins get past this line }; .