Routing এবং HTTP Methods

এক্সপ্রেসজেএস (ExpressJS) - Web Development

273

ExpressJS-এ Routing হল সেই প্রক্রিয়া যেখানে অ্যাপ্লিকেশনের বিভিন্ন URL পাথের জন্য নির্দিষ্ট কোড নির্ধারণ করা হয়। Routing এর মাধ্যমে ব্যবহারকারীর অনুরোধের (request) জন্য সঠিক সাড়া (response) প্রদান করা হয়। এটি ওয়েব অ্যাপ্লিকেশন বা API ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ। ExpressJS HTTP রিকোয়েস্টের ধরন (GET, POST, PUT, DELETE) অনুযায়ী বিভিন্ন রাউট হ্যান্ডলার (route handler) প্রদান করে।


Routing এর মৌলিক ধারণা

ExpressJS-এ, রাউটিং ব্যবহার করে আমরা HTTP রিকোয়েস্টের জন্য URL পাথ ও HTTP মেথড সংজ্ঞায়িত করি। একটি রাউট সাধারণত একটি নির্দিষ্ট HTTP মেথড (যেমন GET, POST) এবং একটি URL পাথের সাথে সম্পর্কিত থাকে। যখন ব্যবহারকারী একটি নির্দিষ্ট পাথ এবং HTTP মেথড দিয়ে রিকোয়েস্ট পাঠায়, তখন ExpressJS ওই রাউট হ্যান্ডলারকে কার্যকর করে।


১. ExpressJS-এ Routing কীভাবে কাজ করে?

ExpressJS-এ, রাউট হ্যান্ডলিং দুটি অংশে বিভক্ত:

  1. HTTP Method: HTTP রিকোয়েস্টের ধরন (GET, POST, PUT, DELETE)।
  2. URL Path: ওয়েব অ্যাপ্লিকেশনের বা API-এর নির্দিষ্ট URL পাথ।

নিচে একটি সাধারণ রাউটিং উদাহরণ দেওয়া হল:

const express = require('express');
const app = express();
const port = 3000;

// GET রিকোয়েস্টের জন্য রাউট
app.get('/', (req, res) => {
  res.send('Hello, World!');
});

// POST রিকোয়েস্টের জন্য রাউট
app.post('/submit', (req, res) => {
  res.send('Data submitted!');
});

// PUT রিকোয়েস্টের জন্য রাউট
app.put('/update', (req, res) => {
  res.send('Data updated!');
});

// DELETE রিকোয়েস্টের জন্য রাউট
app.delete('/delete', (req, res) => {
  res.send('Data deleted!');
});

app.listen(port, () => {
  console.log(`Server is running at http://localhost:${port}`);
});

এখানে:

  • GET রাউট: / পাথের জন্য একটি GET রিকোয়েস্ট পরিচালনা করে।
  • POST রাউট: /submit পাথের জন্য একটি POST রিকোয়েস্ট পরিচালনা করে।
  • PUT রাউট: /update পাথের জন্য একটি PUT রিকোয়েস্ট পরিচালনা করে।
  • DELETE রাউট: /delete পাথের জন্য একটি DELETE রিকোয়েস্ট পরিচালনা করে।

২. HTTP Methods

ExpressJS বিভিন্ন HTTP মেথডকে সাপোর্ট করে। এখানে প্রতিটি মেথডের সংক্ষিপ্ত ব্যাখ্যা দেওয়া হল:

২.১. GET Method

GET রিকোয়েস্ট ব্যবহার করা হয় কোনো রিসোর্স বা ডেটা পাওয়ার জন্য। এটি সাধারণত ব্রাউজারে URL টাইপ করলে বা লিংক ক্লিক করলে ঘটে।

উদাহরণ:

app.get('/about', (req, res) => {
  res.send('About Us');
});

২.২. POST Method

POST রিকোয়েস্ট সাধারণত নতুন ডেটা বা রিসোর্স সার্ভারে পাঠানোর জন্য ব্যবহৃত হয়। এটি ফর্ম ডেটা সাবমিট করার জন্য খুবই সাধারণ।

উদাহরণ:

app.post('/submit', (req, res) => {
  res.send('Form submitted successfully');
});

২.৩. PUT Method

PUT রিকোয়েস্ট ব্যবহার করা হয় সম্পূর্ণ রিসোর্স আপডেট করতে। এটি সাধারণত এমন একটি রিকোয়েস্ট, যেখানে সমস্ত ডেটা সার্ভারে নতুন করে পাঠানো হয়, এবং পূর্বের ডেটা প্রতিস্থাপিত হয়।

উদাহরণ:

app.put('/update', (req, res) => {
  res.send('Data updated successfully');
});

২.৪. DELETE Method

DELETE রিকোয়েস্ট একটি রিসোর্স মুছে ফেলার জন্য ব্যবহৃত হয়।

উদাহরণ:

app.delete('/delete', (req, res) => {
  res.send('Data deleted successfully');
});

২.৫. PATCH Method

PATCH রিকোয়েস্ট ব্যবহার করা হয় কোনো একটি রিসোর্সের অংশবিশেষ আপডেট করার জন্য (সম্পূর্ণ নয়, কিছু অংশ আপডেট করা হয়)।

উদাহরণ:

app.patch('/edit', (req, res) => {
  res.send('Partial update');
});

৩. ExpressJS-এ Route Parameters ব্যবহার করা

ExpressJS-এ রাউট প্যারামিটার ব্যবহার করা খুবই সহজ। রাউট প্যারামিটার ব্যবহার করে আপনি URL-এর মধ্যে ডাইনামিক মান পাঠাতে পারেন। উদাহরণস্বরূপ, কোনো ব্যবহারকারীর প্রোফাইল দেখানোর জন্য ব্যবহারকারীর আইডি প্যারামিটার হিসেবে পাঠানো যেতে পারে।

app.get('/user/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`User ID is: ${userId}`);
});

এখানে /user/:id URL পাথের মাধ্যমে ব্যবহারকারীর আইডি ডাইনামিকভাবে পাঠানো হচ্ছে, যা req.params.id দিয়ে অ্যাক্সেস করা হচ্ছে।


৪. ExpressJS-এ Query Parameters ব্যবহার করা

Query parameters সাধারণত URL-এ ?key=value এর ফরম্যাটে যুক্ত থাকে। ExpressJS-এ আপনি req.query ব্যবহার করে এই মানগুলোর অ্যাক্সেস পেতে পারেন।

app.get('/search', (req, res) => {
  const searchTerm = req.query.q;
  res.send(`Searching for: ${searchTerm}`);
});

এখানে, ?q=keyword এই রকম একটি query string ব্যবহৃত হতে পারে, এবং আপনি req.query.q দিয়ে এই মানটি পাবেন।


৫. Middleware এর সাথে Routing

ExpressJS-এ আপনি মিডলওয়্যার ব্যবহার করে রিকোয়েস্ট এবং রেসপন্সের উপর কিছু কাজ করতে পারেন, যেমন লগিং, অথেন্টিকেশন, ইত্যাদি। Middleware গুলো রাউট হ্যান্ডলারগুলোর আগে বা পরে কাজ করতে পারে।

// সাধারণ Middleware
app.use((req, res, next) => {
  console.log('Request made to: ' + req.url);
  next();
});

// নির্দিষ্ট রাউটের জন্য Middleware
app.get('/admin', (req, res, next) => {
  console.log('Admin route accessed');
  next();
}, (req, res) => {
  res.send('Welcome to Admin page');
});

সারাংশ

ExpressJS-এ Routing খুবই সহজ এবং শক্তিশালী। HTTP Methods (GET, POST, PUT, DELETE, PATCH) ব্যবহার করে আপনি বিভিন্ন ধরনের রিকোয়েস্টের জন্য রাউট তৈরি করতে পারেন। এছাড়াও, রাউট প্যারামিটার এবং কুয়েরি প্যারামিটার ব্যবহার করে ডাইনামিক URL তৈরি করা যায়। ExpressJS-এ মিডলওয়্যার ব্যবহার করে রিকোয়েস্ট এবং রেসপন্সে বিভিন্ন কাজ করা যায়, যা অ্যাপ্লিকেশনটির ফ্লেক্সিবিলিটি ও কার্যকারিতা বৃদ্ধি করে।

Content added By

ExpressJS অ্যাপ্লিকেশনে Router একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি অ্যাপ্লিকেশনের রাউটিং এবং এর স্ট্রাকচার সহজে পরিচালনা করতে সহায়তা করে। Router ব্যবহার করে আপনি অ্যাপ্লিকেশনের বিভিন্ন URL রাউট এবং তাদের জন্য নির্দিষ্ট হ্যান্ডলারগুলি আলাদা করে তৈরি করতে পারেন, যা অ্যাপ্লিকেশনটিকে আরও মডুলার এবং সুসংগঠিত করে তোলে।


Express Router এর ভূমিকা

১. রাউটিং ম্যানেজমেন্ট সহজতর করা

Express অ্যাপ্লিকেশনে বিভিন্ন HTTP মেথড (GET, POST, PUT, DELETE ইত্যাদি) এর জন্য URL পাথের সাথে মিলে গিয়ে কাজ করার জন্য রাউটার ব্যবহৃত হয়। Router এমন একটি কনসেপ্ট যা আপনার অ্যাপ্লিকেশনের রাউটগুলোকে আলাদা করে পরিচালনা করতে সহায়তা করে।

২. মডুলার কোডিং

Router ব্যবহারের মাধ্যমে, অ্যাপ্লিকেশনকে ছোট ছোট অংশে ভাগ করা যায়। প্রতিটি রাউট একটি পৃথক ফাইল বা মডিউলে রাখা যেতে পারে, যা অ্যাপ্লিকেশনটির মেইন ফাইলটি (যেমন app.js) পরিষ্কার এবং সুসংগঠিত রাখে।

৩. মিডলওয়্যার ব্যবহারের সুবিধা

Express Router ব্যবহার করার মাধ্যমে, আপনি একাধিক রাউটের জন্য সাধারণ মিডলওয়্যার প্রয়োগ করতে পারেন। যেমন, কিছু রাউটে লগিং, অথেনটিকেশন, ভ্যালিডেশন ইত্যাদি প্রক্রিয়া প্রয়োগ করা যেতে পারে।


Express Router কিভাবে কাজ করে?

ExpressJS-এ Router হল একটি অবজেক্ট, যা বিভিন্ন HTTP রাউট (GET, POST, PUT, DELETE ইত্যাদি) তৈরি করতে ব্যবহৃত হয়। এটি একটি মডিউল হিসেবে কাজ করে এবং অ্যাপ্লিকেশনের বিভিন্ন রাউট নিয়ে কাজ করতে ব্যবহৃত হয়।


Express Router ব্যবহার করার ধাপগুলো

১. Router তৈরি করা

ExpressJS-এ একটি Router তৈরি করতে, আপনাকে প্রথমে express.Router() ব্যবহার করতে হবে। এরপর, রাউটারটি বিভিন্ন HTTP রিকোয়েস্টের জন্য রাউট তৈরি করবে।

const express = require('express');
const router = express.Router();

// GET রাউট
router.get('/', (req, res) => {
  res.send('Welcome to the Home Page!');
});

// POST রাউট
router.post('/submit', (req, res) => {
  res.send('Form submitted');
});

// PUT রাউট
router.put('/update', (req, res) => {
  res.send('Data updated');
});

// DELETE রাউট
router.delete('/delete', (req, res) => {
  res.send('Data deleted');
});

module.exports = router;

২. Router ব্যবহার করা

এখন, এই রাউটটি আপনার মূল Express অ্যাপ্লিকেশনে ব্যবহার করতে হবে। app.js বা আপনার মূল ফাইলে রাউটারটি ইমপোর্ট করে app.use() এর মাধ্যমে এটি যুক্ত করতে হবে।

const express = require('express');
const app = express();
const port = 3000;

// Router ইমপোর্ট করা
const indexRouter = require('./routes/index');

// রাউটারের ব্যবহার
app.use('/', indexRouter);

app.listen(port, () => {
  console.log(`Server is running at http://localhost:${port}`);
});

এখন, indexRouter এর মধ্যে যে রাউটগুলো আপনি ডিফাইন করেছেন তা / পাথে ব্যবহৃত হবে।


Express Router এর সুবিধা

১. মডুলার কোডিং

Router ব্যবহার করলে কোডের পুনঃব্যবহারযোগ্যতা এবং মডুলারিটি বৃদ্ধি পায়। আপনি রাউটগুলিকে বিভিন্ন ফাইল বা ফোল্ডারে ভাগ করতে পারবেন এবং অ্যাপ্লিকেশনের বড় অংশগুলোকে ছোট ছোট অংশে ভাগ করে রাখতে পারবেন।

২. সহজ রাউটিং

Express Router এর মাধ্যমে একটি অ্যাপ্লিকেশনের অনেক রাউট সহজে পরিচালিত করা যায়। যখন অ্যাপ্লিকেশন বড় হয়, তখন একাধিক রাউটকে একসাথে ম্যানেজ করা সহজ হয়ে যায়।

৩. মিডলওয়্যার প্রয়োগ

Router এর মধ্যে মিডলওয়্যার ব্যবহারের সুবিধা রয়েছে। উদাহরণস্বরূপ, আপনি কেবলমাত্র কিছু রাউটে লগিং বা অথেনটিকেশন মিডলওয়্যার প্রয়োগ করতে পারবেন।

// রাউটারের উপর মিডলওয়্যার প্রয়োগ
router.use((req, res, next) => {
  console.log('Time:', Date.now());
  next();
});

এটি সমস্ত রাউটের জন্য একটি মিডলওয়্যার যুক্ত করবে যা প্রতিটি রিকোয়েস্টের লগ করবে।

৪. ভিন্ন ভিন্ন রাউটের জন্য আলাদা ফাইল

Router এর মাধ্যমে আপনি প্রতিটি রাউটের জন্য আলাদা আলাদা ফাইল তৈরি করতে পারেন, যা অ্যাপ্লিকেশনকে সুসংগঠিত রাখতে সহায়তা করে। যেমন:

routes/
  ├── index.js
  ├── users.js
  └── products.js

এছাড়া, আপনি রাউটগুলোকে নির্দিষ্ট অংশে ভাগ করতে পারেন (যেমন ইউজার রাউট, প্রোডাক্ট রাউট)।


সারাংশ

ExpressJS এর Router অ্যাপ্লিকেশন রাউটিং এবং মডুলার কোডিংয়ের জন্য একটি অত্যন্ত শক্তিশালী টুল। এটি অ্যাপ্লিকেশনের রাউটগুলোকে পৃথকভাবে পরিচালনা করতে এবং মিডলওয়্যার প্রয়োগ করতে সহায়তা করে। Express Router ব্যবহার করলে আপনার অ্যাপ্লিকেশনটি আরও পরিষ্কার, সুসংগঠিত এবং মেইনটেইনেবল হয়ে ওঠে, বিশেষ করে বড় অ্যাপ্লিকেশনে।

Content added By

ExpressJS একটি ওয়েব ফ্রেমওয়ার্ক যা HTTP মেথডগুলোকে সহজে হ্যান্ডল করতে সহায়তা করে। HTTP মেথডগুলো ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগের জন্য ব্যবহার করা হয়। বিভিন্ন মেথডের মাধ্যমে সার্ভারকে নির্দেশ দেওয়া হয় যে কী ধরনের অ্যাকশন বা অপারেশন করতে হবে। ExpressJS-এ এই HTTP মেথডগুলোকে রাউটের মাধ্যমে ব্যবহৃত করা হয়।


১. GET Method

GET মেথড ব্যবহার করা হয় সার্ভার থেকে ডেটা বা তথ্য অনুসন্ধান করার জন্য। এটি সাধারণত তথ্য বা রিসোর্স রিকোয়েস্ট করতে ব্যবহৃত হয়।

উদাহরণ:

app.get('/user', (req, res) => {
  res.send('GET request to the /user route');
});

এই রাউটটি /user এ ক্লায়েন্টের GET রিকোয়েস্ট গ্রহণ করবে এবং "GET request to the /user route" মেসেজটি ফিরিয়ে দিবে।

GET মেথড সাধারণত ব্রাউজারে ইউআরএল টাইপ করার মাধ্যমে ট্রিগার হয় এবং কোনো ডেটা পরিবর্তন করে না।


২. POST Method

POST মেথড ব্যবহার করা হয় সার্ভারে নতুন ডেটা পাঠানোর জন্য। এটি সাধারণত ডেটা ক্রিয়েশন, ফর্ম সাবমিশন বা ডেটাবেজে নতুন রেকর্ড ইনসার্ট করার জন্য ব্যবহৃত হয়।

উদাহরণ:

app.post('/user', (req, res) => {
  res.send('POST request to the /user route');
});

এখানে /user এ ক্লায়েন্টের POST রিকোয়েস্ট আসলে সার্ভার "POST request to the /user route" মেসেজটি রেসপন্স করবে। POST রিকোয়েস্টে সাধারণত ডেটা শরীরের (body) মধ্যে পাঠানো হয়।

POST মেথড ব্যবহার করে ডেটা সার্ভারে পাঠানোর উদাহরণ:

app.post('/user', (req, res) => {
  const user = req.body;  // এখানে ফর্ম বা JSON ডেটা পাঠানো হবে
  res.send(`User ${user.name} added successfully`);
});

৩. PUT Method

PUT মেথড ব্যবহৃত হয় কোনো রিসোর্স বা ডেটাকে সম্পূর্ণভাবে আপডেট করার জন্য। সাধারণত PUT রিকোয়েস্টে পাঠানো ডেটা পুরনো রেকর্ডকে সম্পূর্ণরূপে প্রতিস্থাপন করে।

উদাহরণ:

app.put('/user/:id', (req, res) => {
  const userId = req.params.id;
  const updatedUser = req.body;
  res.send(`User with ID ${userId} updated successfully`);
});

এখানে /user/:id রাউটের মাধ্যমে কোনো নির্দিষ্ট ইউজারের তথ্য আপডেট করার জন্য PUT রিকোয়েস্ট পাঠানো হবে। req.params.id এর মাধ্যমে URL থেকে ID পাওয়া যাবে এবং req.body দিয়ে নতুন ডেটা।


৪. DELETE Method

DELETE মেথড ব্যবহার করা হয় কোনো রিসোর্স বা ডেটা মুছে ফেলার জন্য। এটি সাধারণত রেকর্ড ডিলিট করতে ব্যবহৃত হয়।

উদাহরণ:

app.delete('/user/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`User with ID ${userId} deleted successfully`);
});

এখানে /user/:id রাউটে DELETE রিকোয়েস্টে একটি নির্দিষ্ট ইউজারের ডেটা মুছে ফেলা হবে।


৫. PATCH Method

PATCH মেথড ব্যবহার করা হয় কোনো রিসোর্সের একটি অংশ আপডেট করার জন্য। এটি PUT মেথডের মতো হলেও, PUT সম্পূর্ণ রিসোর্স রিপ্লেস করে, whereas PATCH শুধুমাত্র কিছু অংশ বা নির্দিষ্ট ফিল্ড আপডেট করে।

উদাহরণ:

app.patch('/user/:id', (req, res) => {
  const userId = req.params.id;
  const updatedFields = req.body;
  res.send(`User with ID ${userId} updated with the following fields: ${JSON.stringify(updatedFields)}`);
});

এখানে /user/:id রাউটে PATCH রিকোয়েস্টে ইউজারের কিছু নির্দিষ্ট ফিল্ড আপডেট করা হবে।


৬. OPTIONS Method

OPTIONS মেথড ব্যবহার করা হয় কোন রিসোর্সের জন্য সমর্থিত HTTP মেথডগুলো জানতে। এটি সাধারণত CORS (Cross-Origin Resource Sharing) পলিসি চেক করার জন্য ব্যবহৃত হয়।

উদাহরণ:

app.options('/user', (req, res) => {
  res.set('Allow', 'GET, POST, PUT, DELETE');
  res.send();
});

এখানে OPTIONS রিকোয়েস্টে /user রিসোর্সের জন্য যেসব HTTP মেথড সমর্থিত, তা রেসপন্স হিসেবে ফিরিয়ে দেয়া হবে।


৭. HEAD Method

HEAD মেথড GET মেথডের মতো, তবে এটি শুধুমাত্র রিসোর্সের হেডার পাঠায়, রিসোর্সের কনটেন্ট নয়। সাধারণত এটি রিসোর্সের মেটা তথ্য বা হেডার চেক করার জন্য ব্যবহৃত হয়।

উদাহরণ:

app.head('/user', (req, res) => {
  res.send();
});

এটি /user রাউটে HEAD রিকোয়েস্টকে গ্রহণ করবে, কিন্তু কোন কনটেন্ট ফিরিয়ে দিবে না।


সারাংশ

ExpressJS এর মাধ্যমে HTTP মেথডগুলো ব্যবহার করে আপনি ওয়েব অ্যাপ্লিকেশনের বিভিন্ন ক্রিয়াকলাপ যেমন তথ্য অনুসন্ধান (GET), ডেটা প্রেরণ (POST), ডেটা আপডেট (PUT), ডেটা মুছে ফেলা (DELETE), বা আংশিক আপডেট (PATCH) করতে পারেন। এসব HTTP মেথড ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ স্থাপন এবং ডেটার উপর বিভিন্ন অপারেশন সম্পাদন করতে ব্যবহৃত হয়। ExpressJS এই মেথডগুলিকে খুব সহজেই রাউটের মাধ্যমে হ্যান্ডল করতে সহায়তা করে।

Content added By

ExpressJS এর মাধ্যমে আপনি URL এর মধ্যে ডাইনামিক ডেটা পাঠাতে পারেন, যা রাউট প্যারামিটার (Route Parameters) এবং কুয়েরি স্ট্রিং (Query Strings) হিসেবে পরিচিত। এগুলি ব্যবহার করে আপনি রাউটের সাথে সম্পর্কিত বিভিন্ন ভ্যালু সংগ্রহ করতে এবং সেগুলি ব্যবহার করতে পারবেন।


১. Route Parameters (রাউট প্যারামিটার)

রাউট প্যারামিটার হলো URL এর অংশ যা ডাইনামিক ডেটা ধারণ করে এবং ExpressJS এ এটি : (কলন) চিহ্নের মাধ্যমে চিহ্নিত করা হয়।

১.১. রাউট প্যারামিটার সেটআপ

একটি সাধারণ রাউট প্যারামিটার সেটআপ করা হয় এইভাবে:

app.get('/user/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`User ID: ${userId}`);
});

এখানে, /user/:id রাউটটি একটি ডাইনামিক প্যারামিটার গ্রহণ করে, যেখানে :id হলো একটি প্যারামিটার। যখন ব্যবহারকারী http://localhost:3000/user/123 এ যাবে, তখন 123 req.params.id এর মাধ্যমে অ্যাক্সেস করা যাবে।

১.২. রাউট প্যারামিটার ব্যবহার

উদাহরণ:

const express = require('express');
const app = express();
const port = 3000;

// রাউট প্যারামিটার ব্যবহার
app.get('/user/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`User ID is: ${userId}`);
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

এখন, http://localhost:3000/user/123 URL এ গেলে আপনি "User ID is: 123" দেখবেন।

১.৩. একাধিক রাউট প্যারামিটার

আপনি একাধিক প্যারামিটারও ব্যবহার করতে পারেন:

app.get('/user/:id/:action', (req, res) => {
  const { id, action } = req.params;
  res.send(`User ID: ${id}, Action: ${action}`);
});

এখানে, আপনি /user/123/edit এ গিয়ে "User ID: 123, Action: edit" দেখতে পাবেন।


২. Query Strings (কুয়েরি স্ট্রিং)

কুয়েরি স্ট্রিং হল URL এর অংশ, যা সাধারণত ? চিহ্ন দিয়ে শুরু হয় এবং এক বা একাধিক কুয়েরি প্যারামিটার দিয়ে গঠিত হয়। ExpressJS তে কুয়েরি স্ট্রিংগুলো req.query অবজেক্টের মাধ্যমে অ্যাক্সেস করা যায়।

২.১. কুয়েরি স্ট্রিং ব্যবহার

উদাহরণ:

app.get('/search', (req, res) => {
  const query = req.query.q;
  res.send(`Search term: ${query}`);
});

এখানে, /search?q=express URL এ গেলে q প্যারামিটারটি req.query.q দিয়ে অ্যাক্সেস করা যাবে, এবং আপনি "Search term: express" দেখতে পাবেন।

২.২. একাধিক কুয়েরি প্যারামিটার

আপনি একাধিক কুয়েরি প্যারামিটারও পাঠাতে পারেন, যেমন:

app.get('/filter', (req, res) => {
  const { category, price } = req.query;
  res.send(`Category: ${category}, Price: ${price}`);
});

এখন, আপনি /filter?category=electronics&price=100 এ গেলে আপনি "Category: electronics, Price: 100" দেখতে পাবেন।


৩. Route Parameters এবং Query Strings একসাথে ব্যবহার

রাউট প্যারামিটার এবং কুয়েরি স্ট্রিং একসাথে ব্যবহার করা সম্ভব, এবং আপনি সহজেই এই দুইটি মিশিয়ে কাজ করতে পারবেন।

উদাহরণ:

app.get('/user/:id', (req, res) => {
  const userId = req.params.id;
  const filter = req.query.filter;
  res.send(`User ID: ${userId}, Filter: ${filter}`);
});

এখানে, আপনি /user/123?filter=active URL এ গিয়ে "User ID: 123, Filter: active" দেখতে পাবেন।


৪. ExpressJS এর Middleware ব্যবহার করে Route Parameters এবং Query Strings হ্যান্ডলিং

যদি আপনাকে রাউট প্যারামিটার এবং কুয়েরি স্ট্রিং থেকে কোন নির্দিষ্ট ভ্যালু পরীক্ষা করতে হয়, তবে আপনি ExpressJS এর middleware ব্যবহার করতে পারেন।

উদাহরণ:

// Middleware function to check query string
function checkQuery(req, res, next) {
  if (req.query.q) {
    console.log('Query string exists');
    next(); // Continue to the route handler
  } else {
    res.send('No query string provided');
  }
}

app.get('/search', checkQuery, (req, res) => {
  const query = req.query.q;
  res.send(`Search term: ${query}`);
});

এখানে, যদি কুয়েরি প্যারামিটার q উপস্থিত থাকে, তাহলে middleware চলবে এবং রাউটের হ্যান্ডলার কাজ করবে।


সারাংশ

ExpressJS এ রাউট প্যারামিটার এবং কুয়েরি স্ট্রিং ব্যবহার খুবই সহজ এবং শক্তিশালী। রাউট প্যারামিটারগুলি URL এর অংশ হিসেবে ডাইনামিক ডেটা গ্রহণ করতে ব্যবহৃত হয়, এবং কুয়েরি স্ট্রিংগুলি সাধারণত ফিল্টার বা সার্চ তথ্য পাঠানোর জন্য ব্যবহৃত হয়। আপনি এদেরকে একসাথে ব্যবহার করে আরও ফ্লেক্সিবল এবং শক্তিশালী ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন। ExpressJS তে req.params এবং req.query ব্যবহার করে সহজেই এই ডেটাগুলি এক্সেস করা যায়।

Content added By

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 প্যারামিটার গ্রহণ করতে সক্ষম যা অ্যাপ্লিকেশনকে আরও ডাইনামিক এবং ব্যবহারকারী-বান্ধব করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...