Middleware ka Funda

Understand how Middleware works with Fullstackgada

🚪 Middleware Kya Hai?

Middleware: Functions jo request aur response ke beech mein kaam karte hain - bilkul society ke checkpoints jaise!

🏢 Society Gate Checkpoint System

👮
Watchman: Kahan ja rahe ho? (Request Validation)
🔍
Security Guard: Bag check karta hai (Authentication)
📝
Log Book: Entry note karta hai (Logging)
🚪
Aakhir Mein: Babita ji bahar ja sakti hain (API Response)
Upar ke buttons dabao Middleware ka action dekhne ke liye!

🌐 Live API Request Flow

Simulate Karo: Asli API request ke saath middleware pipeline dekho!

🔄 Middleware Pipeline:

1
Request Logger - Aane wali requests ko log karta hai
2
Auth Middleware - Token check karta hai
3
Role Checker - User ke permissions dekhta hai
4
Rate Limiter - Requests ki speed control karta hai
5
Main API Handler - Business logic chalata hai

🎬 Real-time Middleware Execution

Live Tracking: Request ke saath-saath har middleware ka execution dekho!
1️⃣ Request Logger
Request ka intezaar...
2️⃣ Authentication
Intezaar...
3️⃣ Role Authorization
Intezaar...
4️⃣ Rate Limiting
Intezaar...
5️⃣ API Handler
Intezaar...
6️⃣ Response
Intezaar...

Execution Log:

Middleware execution track karne ke liye tayyar...

💻 Middleware Code ke Examples

// 🚀 Express.js Middleware Basics
const express = require('express');
const app = express();
// Middleware 1: Request Logger (Watchman)
app.use((req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
console.log('👮 Watchman: Kahan ja rahe ho?', req.url);
next(); // Aage bhejo
});
// Middleware 2: Authentication (Security Guard)
app.use((req, res, next) => {
const token = req.headers.authorization;
if (!token) {
console.log('🔍 Security Guard: ID card dikhao!');
return res.status(401).json({ error: 'Token chahiye' });
}
console.log('🔍 Security Guard: ID check ho gaya, jao!');
next();
});
// Main API Route (Aakhri Manzil)
app.get('/user/profile', (req, res) => {
console.log('🚪 API Handler: Request apni manzil tak pohunch gaya!');
res.json({
message: 'Welcome Babita Ji!',
user: { name: 'Babita', role: 'user' }
});
});
app.listen(3000, () => {
console.log('🏢 Society server port 3000 pe chal raha hai');
});
Express middleware test karne ke liye click karo...
// 🔧 Custom Middleware Functions
// 👮 Watchman Middleware
function requestLogger(req, res, next) {
const timestamp = new Date().toISOString();
console.log(`[${timestamp}] ${req.method} ${req.url}`);
req.requestTime = timestamp; // Request mein data daal do
next(); // Aage bhejo
}
// 🔍 Security Guard Middleware
function authenticateToken(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) {
return res.status(401).json({
error: 'Access band hai. Token chahiye.',
message: '🚫 Security Guard: ID card nahi dikhaya!'
});
}
// Token check karo (simple version)
if (token === 'valid-token') {
req.user = { id: 1, name: 'Babita', role: 'user' };
next();
} else {
return res.status(403).json({
error: 'Token galat hai',
message: '🚫 Security Guard: Nakli ID card!'
});
}
}
// 📝 Log Book Middleware
function logEntry(req, res, next) {
const entry = {
user: req.user?.name || 'Pata nahi',
action: `${req.method} ${req.url}`,
timestamp: req.requestTime,
ip: req.ip
};
console.log('📝 Log Book Entry:', entry);
// Database mein save karna padega
// await logToDatabase(entry);
next();
}
// Usage: Middleware chain
app.use(requestLogger);
app.use(authenticateToken);
app.use(logEntry);
Custom middleware test karne ke liye click karo...
// ⚠️ Error Handling Middleware
// Global Error Handler (Aakhir mein)
function errorHandler(err, req, res, next) {
console.error('🚨 Error aaya:', err.message);
// Error ke type ke hisaab se response
if (err.name === 'ValidationError') {
return res.status(400).json({
error: 'Validation fail hua',
message: '📝 Log Book: Galat information di hai!'
});
}
if (err.name === 'UnauthorizedError') {
return res.status(401).json({
error: 'Permission nahi hai',
message: '🔍 Security Guard: Ijaazat nahi hai!'
});
}
// General server error
res.status(500).json({
error: 'Server mein kharabi',
message: '🏢 Society mein koi problem hai!'
});
}
// Async Error Wrapper
function asyncHandler(fn) {
return (req, res, next) => {
Promise.resolve(fn(req, res, next)).catch(next);
};
}
// Routes mein use
app.get('/user/profile', asyncHandler(async (req, res) => {
// Ye async function hai, errors apne aap handle honge
const user = await getUserFromDatabase(req.user.id);
if (!user) {
throw new Error('User nahi mila'); // Apne aap pakda jayega
}
res.json(user);
}));
// Error handler ko aakhir mein register karo
app.use(errorHandler);
Error handling test karne ke liye click karo...
// 🔗 Poora Middleware Chain Setup
const express = require('express');
const app = express();
// 1️⃣ Global Middlewares (Sab routes ke liye)
app.use(express.json()); // JSON parser
app.use(requestLogger); // Har request log karo
app.use(corsHandler); // CORS headers daalo
// 2️⃣ Public Routes (Koi authentication nahi)
app.get('/public/news', (req, res) => {
res.json({ news: 'Gokuldham Society mein nayi khabrein!' });
});
// 3️⃣ Protected Routes (Authentication chahiye)
app.use('/user', authenticateToken); // Sab /user routes protected
app.get('/user/profile', logEntry, (req, res) => {
res.json({ user: req.user });
});
// 4️⃣ Admin Routes (Role-based access)
app.use('/admin', authenticateToken, requireAdmin);
app.get('/admin/dashboard', logEntry, (req, res) => {
res.json({ message: 'Admin dashboard ka data' });
});
// 5️⃣ Route-specific Middleware
function requireAdmin(req, res, next) {
if (req.user.role !== 'admin') {
return res.status(403).json({
message: '🚫 Sirf Secretary ko ijaazat hai!'
});
}
next();
}
// 6️⃣ Rate Limiting Middleware
function rateLimiter(maxRequests = 100) {
const requests = new Map();
return (req, res, next) => {
const clientIP = req.ip;
const now = Date.now();
const windowStart = now - (60 * 1000); // 1 minute ka window
if (!requests.has(clientIP)) {
requests.set(clientIP, []);
}
const userRequests = requests.get(clientIP);
const recentRequests = userRequests.filter(time => time > windowStart);
if (recentRequests.length >= maxRequests) {
return res.status(429).json({
message: '🚫 Bahut zyada requests! Thodi der wait karo!'
});
}
recentRequests.push(now);
requests.set(clientIP, recentRequests);
next();
};
}
Middleware chain test karne ke liye click karo...

🌍 Real-world Middleware Scenarios

Scenario Zaroori Middleware Kaise Lagaya Faayde
🛒 E-commerce API Auth, Rate limiting, Logging, Validation JWT check, Request/min limits Surakshit shopping, misuse se bachao
📱 Social Media App Auth, Image processing, Content moderation Token check, Multer, AI filtering User safety, content quality
🏦 Banking System Strong auth, Encryption, Audit logs 2FA, SSL/TLS, Poora logging Security rules follow, fraud detection
📰 News Website Caching, Compression, Analytics Redis cache, Gzip, User tracking Tez loading, user insights
🎮 Gaming API Real-time auth, Rate limiting, Analytics WebSocket auth, Game-specific limits Fair khel, performance dekho