ExpressJS এ রাউটিং ব্যবস্থাটি অত্যন্ত শক্তিশালী এবং নমনীয়। এর মাধ্যমে আপনি nested routes (যতটি গভীর বা স্তরিত রাউট) এবং dynamic routes (যেখানে কিছু ভেরিয়েবল ইউআরএল পাথের মধ্যে থাকে) তৈরি করতে পারেন। এই ফিচারগুলো অ্যাপ্লিকেশনের জটিল রাউটিং কাঠামো তৈরি করতে সহায়ক।
১. Nested Routes
Nested routes এর মাধ্যমে আপনি একটি রাউটের মধ্যে আরেকটি রাউট নেস্ট (অর্থাৎ, вложить) করতে পারেন। এটি খুবই কার্যকর যখন আপনি অ্যাপ্লিকেশনের মধ্যে একাধিক স্তরের রাউট বা সাব-পাথ তৈরি করতে চান।
১.১. Nested Routes তৈরি করা
ধরা যাক, আপনার অ্যাপে "products" নামে একটি সেকশন রয়েছে এবং আপনি সেখানে বিভিন্ন সাব-রাউট যুক্ত করতে চান, যেমন "products/:id" বা "products/create"।
const express = require('express');
const app = express();
const port = 3000;
// Products রাউট
const productsRouter = express.Router();
// প্রোডাক্ট লিস্ট
productsRouter.get('/', (req, res) => {
res.send('Product List');
});
// প্রোডাক্ট ডিটেইল
productsRouter.get('/:id', (req, res) => {
const productId = req.params.id;
res.send(`Product details for product ID: ${productId}`);
});
// প্রোডাক্ট তৈরি
productsRouter.get('/create', (req, res) => {
res.send('Create a new product');
});
// Products রাউট অ্যাপ্লিকেশনটিতে যুক্ত করা
app.use('/products', productsRouter);
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
এখানে:
/products/- প্রোডাক্টের লিস্ট দেখাবে।/products/:id- নির্দিষ্ট প্রোডাক্টের ডিটেইল দেখাবে (এটি একটি dynamic রাউট, যেখানে:idএকটি প্যারামিটার)।/products/create- নতুন প্রোডাক্ট তৈরি করার পেজ।
১.২. Nested Routes এর সুবিধা
Nested routes এর মাধ্যমে আপনি একাধিক স্তরের রাউট সহজেই পরিচালনা করতে পারেন এবং প্রতিটি রাউটের জন্য আলাদা হ্যান্ডলার এবং লজিক রাখতে পারেন।
২. Dynamic Routes
Dynamic routes বা parameterized routes এমন রাউট যেখানে ইউআরএল এর মধ্যে ভেরিয়েবল ভ্যালু থাকে, যেগুলি কোডের মধ্যে প্রোগ্রাম্যাটিকভাবে গ্রহণ করা হয়।
২.১. Dynamic Routes তৈরি করা
ধরা যাক, আপনি একটি ব্লগ সাইট তৈরি করছেন এবং প্রতিটি পোস্টের জন্য একটি ইউনিক আইডি রয়েছে। আপনি ইউআরএল এর মাধ্যমে পোস্ট আইডি গ্রহণ করতে চাইলে dynamic routes ব্যবহার করবেন।
const express = require('express');
const app = express();
const port = 3000;
// Dynamic Route
app.get('/post/:id', (req, res) => {
const postId = req.params.id;
res.send(`Displaying post with ID: ${postId}`);
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
এখানে:
/post/:id-:idএকটি dynamic প্যারামিটার যা URL এর মধ্যে গৃহীত হয় এবংreq.params.idদ্বারা এক্সেস করা যায়।- আপনি
postIdভেরিয়েবলের মাধ্যমে নির্দিষ্ট পোস্টের তথ্য প্রদর্শন করতে পারবেন।
২.২. Dynamic Query Parameters
ExpressJS এ আপনি শুধু পাথ প্যারামিটারই না, বরং query parametersও ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
app.get('/search', (req, res) => {
const query = req.query.q; // ?q=express
res.send(`Search results for: ${query}`);
});
এখানে:
req.query.qদিয়ে আপনি URL এর query string থেকেqপ্যারামিটারটি গ্রহণ করছেন। উদাহরণস্বরূপ,/search?q=expressএ গেলেexpressকীওয়ার্ডের জন্য সার্চ রেজাল্ট দেখতে পাবেন।
৩. Dynamic Routes এবং Regular Expressions
আপনি regular expressions ব্যবহার করে আরও বেশি কাস্টম রাউট তৈরি করতে পারেন, যেমন একটি রাউট যা শুধুমাত্র নির্দিষ্ট প্যাটার্নের সঙ্গে ম্যাচ করবে।
৩.১. Regular Expression এর মাধ্যমে Dynamic Routes
app.get('/user/:id([0-9]{4})', (req, res) => {
const userId = req.params.id;
res.send(`User ID is: ${userId}`);
});
এখানে:
:id([0-9]{4})এই রাউট শুধুমাত্র চার ডিজিটের সংখ্যা (যেমন1234) গ্রহণ করবে।/user/1234এই রাউটে আপনি সঠিক রেসপন্স পাবেন, কিন্তু/user/abcএই রাউটে 404 এরর পাবেন।
৪. Nested এবং Dynamic Routes ব্যবহার করে বৃহত্তর অ্যাপ্লিকেশন তৈরি
ধরা যাক, আপনি একটি ওয়েব অ্যাপ তৈরি করছেন যেখানে ইউজার রেগিস্ট্রেশন, লগইন এবং প্রোফাইল পেজের জন্য আলাদা রাউট তৈরি করবেন। এই পরিস্থিতিতে Nested এবং Dynamic Routes খুবই সহায়ক।
const express = require('express');
const app = express();
const port = 3000;
// Users রাউট
const usersRouter = express.Router();
// ইউজার লিস্ট
usersRouter.get('/', (req, res) => {
res.send('User List');
});
// ইউজার প্রোফাইল (Dynamic Route)
usersRouter.get('/:id', (req, res) => {
const userId = req.params.id;
res.send(`User profile for user ID: ${userId}`);
});
// Register এবং Login রাউট
usersRouter.get('/register', (req, res) => {
res.send('Register a new user');
});
usersRouter.get('/login', (req, res) => {
res.send('Login page');
});
// Users রাউট অ্যাপ্লিকেশনটিতে যুক্ত করা
app.use('/users', usersRouter);
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
এখানে:
/users/- ইউজার লিস্ট দেখাবে।/users/:id- নির্দিষ্ট ইউজারের প্রোফাইল দেখাবে।/users/register- নতুন ইউজার রেজিস্টার করার পেজ।/users/login- লগইন পেজ।
সারাংশ
ExpressJS এ nested routes এবং dynamic routes ব্যবহার করে আপনি আরও শক্তিশালী, সংগঠিত এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে পারেন। Nested routes বিভিন্ন স্তরের রাউট তৈরি করার জন্য উপযুক্ত, এবং dynamic routes ইউআরএল পাথ বা query প্যারামিটার গ্রহণ করতে সক্ষম যা অ্যাপ্লিকেশনকে আরও ডাইনামিক এবং ব্যবহারকারী-বান্ধব করে তোলে।
Read more