MeanJS স্ট্যাক ব্যবহারের সময় Routes এবং Middleware এর সঠিক ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ। এগুলি হল অ্যাপ্লিকেশনের রাউটিং এবং HTTP রিকুয়েস্ট হ্যান্ডলিংয়ের দুটি মৌলিক অংশ। চলুন, আমরা বিস্তারিতভাবে দেখি MeanJS তে রাউট এবং মিডলওয়্যার ব্যবস্থাপনার কিভাবে কাজ করে।
Routes
Routes হলো একটি অ্যাপ্লিকেশনের সেই অংশ যেখানে HTTP রিকুয়েস্ট (যেমন GET, POST, PUT, DELETE) প্রক্রিয়া করা হয়। Express.js ফ্রেমওয়ার্ক routes পরিচালনার জন্য একটি সোজা এবং শক্তিশালী উপায় প্রদান করে। একটি route সাধারণত একটি URL প্যাটার্ন এবং সেই প্যাটার্নের সাথে সম্পর্কিত একটি callback function (controller) থাকে যা HTTP রিকুয়েস্টের প্রতিক্রিয়া প্রদান করে।
Routes এর কাজ
- URL matching: কোন রিকুয়েস্ট আসছে তার ওপর ভিত্তি করে রাউটিং প্রক্রিয়া।
- HTTP Methods: GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড ব্যবহার করা হয়।
- Callback function: একটি ফাংশন যা রিকুয়েস্টের প্রতিক্রিয়া প্রদান করে।
Route উদাহরণ
const express = require('express');
const router = express.Router();
// GET রিকুয়েস্টের জন্য একটি রাউট
router.get('/home', function(req, res) {
res.send('Welcome to Home page!');
});
// POST রিকুয়েস্টের জন্য একটি রাউট
router.post('/user', function(req, res) {
const user = req.body;
res.send('User added: ' + user.name);
});
module.exports = router;
এখানে, /home URL-এ একটি GET রিকুয়েস্ট আসলে একটি বার্তা পাঠানো হবে এবং /user URL-এ POST রিকুয়েস্ট আসলে ব্যবহারকারী তথ্য গ্রহণ করবে।
Middleware
Middleware হল এমন একটি ফাংশন যা HTTP রিকুয়েস্ট এবং রেসপন্স অবজেক্টের মধ্যবর্তী একটি স্তর হিসেবে কাজ করে। Middleware একাধিক ফাংশন হতে পারে যা একে একে রিকুয়েস্ট প্রসেস করতে থাকে এবং বিভিন্ন কার্যকলাপ যেমন লগিং, অথেনটিকেশন, ডেটা ভ্যালিডেশন ইত্যাদি সম্পন্ন করে।
Middleware এর কাজ
- Request processing: রিকুয়েস্টের প্রাক-প্রসেসিং যেমন লগিং, চেকিং, ভ্যালিডেশন ইত্যাদি।
- Response modification: রেসপন্সের পূর্বে কিছু পরিবর্তন করা যেমন রেসপন্স কোড সেট করা।
- Error handling: ভুল বা ব্যতিক্রম হলে তা হ্যান্ডল করা।
Middleware উদাহরণ
// সাধারন Middleware উদাহরণ
const express = require('express');
const app = express();
// রিকুয়েস্ট লগিং মিডলওয়্যার
app.use((req, res, next) => {
console.log('A request was made to: ' + req.url);
next(); // পরবর্তী মিডলওয়্যারে পাঠানো
});
// একটি রাউট
app.get('/', (req, res) => {
res.send('Hello World!');
});
// সাধারন Error Handling Middleware
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something went wrong!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
এখানে প্রথম মিডলওয়্যারটি সকল রিকুয়েস্ট লগ করতে ব্যবহৃত হচ্ছে, এবং দ্বিতীয়টি কোনো ত্রুটি (error) ঘটলে তা হ্যান্ডল করার জন্য।
MeanJS তে Routes এবং Middleware ব্যবস্থাপনা
১. Routes ব্যবস্থাপনা
MeanJS অ্যাপ্লিকেশনে রাউটগুলি সাধারণত server/routes ফোল্ডারে সংরক্ষিত হয়। প্রতিটি রাউট আলাদা ফাইল হিসেবে সংরক্ষিত হতে পারে, যেমন users.js, posts.js ইত্যাদি। Express.js রাউটিং সিস্টেমে, আপনি URL প্যাটার্ন এবং বিভিন্ন HTTP মেথডের জন্য কোড লিখে রিকুয়েস্টের প্রতিক্রিয়া দিতে পারেন।
২. Middleware ব্যবস্থাপনা
Middleware সাধারণত server/middleware ফোল্ডারে রাখা হয়। এটি সাধারণত authentication, authorization, এবং request validation এর মতো কাজের জন্য ব্যবহৃত হয়। MeanJS এ Middleware সাধারণত দুই ধরনের হতে পারে:
- Application-level middleware: যেগুলি অ্যাপ্লিকেশন পুরোপুরি ব্যবহারের জন্য।
- Route-level middleware: যেগুলি বিশেষ রাউটে ব্যবহৃত হয়, যেমন বিশেষ রাউটের জন্য অথেনটিকেশন যাচাই।
উদাহরণ: Route এবং Middleware ব্যবহারে কীভাবে একটি ব্যবহারকারী রিকুয়েস্টের যাচাই করতে হবে
const express = require('express');
const app = express();
// Authentication Middleware
function checkAuthentication(req, res, next) {
if (!req.isAuthenticated()) {
return res.status(401).send('Unauthorized');
}
next();
}
// Routes
app.get('/dashboard', checkAuthentication, (req, res) => {
res.send('Welcome to the Dashboard!');
});
// Middleware example for logging request
app.use((req, res, next) => {
console.log('Request received at: ' + new Date());
next();
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
এখানে, /dashboard রাউটে checkAuthentication মিডলওয়্যারটি ব্যবহার করা হচ্ছে, যা যাচাই করে যে ব্যবহারকারী লগইন করেছে কিনা। এছাড়া, এক্সেস করার আগে রিকুয়েস্টের জন্য একটি লগ তৈরি হচ্ছে।
সারাংশ
MeanJS স্ট্যাকের মধ্যে Routes এবং Middleware ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ। Routes রিকুয়েস্টের ভিত্তিতে নির্দিষ্ট অ্যাকশন নেয়, এবং Middleware রিকুয়েস্ট প্রসেসিংয়ের বিভিন্ন স্তরে কাজ করে যেমন লগিং, অথেনটিকেশন বা ত্রুটি হ্যান্ডলিং। এগুলি ঠিকভাবে ব্যবস্থাপনা করলে অ্যাপ্লিকেশনের কার্যকারিতা বৃদ্ধি পায় এবং নিরাপত্তা আরও শক্তিশালী হয়।
Read more