ExpressIntermediate
Express Middleware
Middleware কী, custom middleware, built-in middleware, application-level middleware — বাংলায়।
14টি অংশবাংলা ভাষায়
Middleware হলো functions যা request-এর আগে বা পরে execute হয়। প্রতিটি middleware-এর access থাকে req, res, next — next() call করলে পরবর্তী middleware-তে যায়।
Middleware Flow
Request coming
│
▼
[Middleware 1] ── next() ──► [Middleware 2] ── next() ──► [Route Handler]
▲ ▲
└─── response lo pass ─────┘
│
▼
Response sendCustom Middleware তৈরি
middleware/logger.jsjavascript
javascript
// Simple logger middleware
const logger = (req, res, next) => {
const start = Date.now();
console.log("➡️", req.method, req.url);
res.on("finish", () => {
const ms = Date.now() - start;
console.log("⬅️", res.statusCode, ms + "ms");
});
next();
};
module.exports = logger;index.jsjavascript
javascript
const express = require("express");
const logger = require("./middleware/logger");
const app = express();
app.use(logger); // সব routes-এ apply
app.get("/", (req, res) => {
res.send("Middleware আছি!");
});
// নির্দিষ্ট path-এ middleware
app.use("/api", require("./middleware/apiAuth"));Built-in Middleware
// Body parsing — JSON
app.use(express.json());
// Body parsing — URL encoded form
app.use(express.urlencoded({ extended: true }));
// Static files
app.use(express.static("public"));
// Raw data
app.use(express.raw({ type: "application/octet-stream" }));Third-party Middleware
npm install cors helmet morgan compressionconst cors = require("cors");
const helmet = require("helmet");
const morgan = require("morgan");
const compression = require("compression");
app.use(helmet()); // security headers
app.use(cors()); // cross-origin
app.use(morgan("dev")); // logging
app.use(compression()); // gzip compressionMiddleware Types
| Type | ব্যবহার |
|---|---|
| Application-level | app.use() — সব request-এ |
| Router-level | router.use() — ওই router-এ |
| Error-handling | (err, req, res, next) — error এর জন্য |
| Built-in | express.json() ইত্যাদি |
| Third-party | cors, helmet, multer ইত্যাদি |
মনে রাখুন
Middleware-কে next() call করতে ভুলবেন না — না করলে request আটকে যাবে। কিংবা res.send() 같이 response পাঠিয়ে শেষ করুন।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।