Built-in Middleware এবং Custom Middleware তৈরি

Middleware এর ভূমিকা - এক্সপ্রেসজেএস (ExpressJS) - Web Development

253

ExpressJS-এ middleware একটি গুরুত্বপূর্ণ উপাদান, যা রিকোয়েস্ট এবং রেসপন্স সাইকেলের মাঝে কার্যকরভাবে কাজ করে। Middleware হলো এমন ফাংশন, যা রিকোয়েস্ট এবং রেসপন্স অবজেক্টের মধ্যে এক্সিকিউট হয়, এবং এটি সার্ভার সাইডে কিছু নির্দিষ্ট কাজ যেমন রিকোয়েস্ট ভ্যালিডেশন, লগিং, অথেনটিকেশন ইত্যাদি করতে ব্যবহৃত হয়।

ExpressJS দুটি প্রধান ধরনের middleware সাপোর্ট করে: built-in middleware এবং custom middleware


১. Built-in Middleware

ExpressJS-এ কিছু সাধারণ এবং প্রয়োজনীয় built-in middleware রয়েছে যা আপনাকে বিভিন্ন কাজ সহজে করতে সাহায্য করে। এই middleware গুলো Express এর সাথে ডিফল্টভাবে আসে এবং আপনাকে আলাদাভাবে ইন্সটল বা কনফিগার করতে হয় না।

১.১. express.json()

এই middleware JSON ডাটা পার্স করতে ব্যবহৃত হয়। যখন ক্লায়েন্ট থেকে JSON ডাটা আসে, তখন এটি স্বয়ংক্রিয়ভাবে রিকোয়েস্ট বডিতে থাকা JSON ডাটা পার্স করে।

ব্যবহার:

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

// JSON বডি পার্স করার জন্য express.json() ব্যবহার করা হচ্ছে
app.use(express.json());

app.post('/data', (req, res) => {
  console.log(req.body);  // এখানে ক্লায়েন্ট থেকে পাঠানো JSON ডাটা পাওয়া যাবে
  res.send('Data received');
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

১.২. express.urlencoded()

এই middleware URL-এনকোডেড ডাটা পার্স করতে ব্যবহৃত হয়। যখন ক্লায়েন্ট থেকে ফর্ম ডাটা পাঠানো হয় (যেমন HTML ফর্ম), তখন এই middleware তা পার্স করে।

ব্যবহার:

app.use(express.urlencoded({ extended: true }));

app.post('/form', (req, res) => {
  console.log(req.body);  // ফর্ম ডাটা পাওয়া যাবে
  res.send('Form submitted');
});

১.৩. express.static()

এই middleware স্ট্যাটিক ফাইল (যেমন HTML, CSS, JavaScript, ইমেজ) সারা বিশ্বের ব্যবহারকারীদের কাছে সরবরাহ করতে ব্যবহৃত হয়।

ব্যবহার:

app.use(express.static('public'));  // 'public' ফোল্ডারের স্ট্যাটিক ফাইল সরবরাহ করবে

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

এই ক্ষেত্রে, যদি আপনি public ফোল্ডারে index.html ফাইল রাখেন, তবে http://localhost:3000/index.html ইউআরএল দিয়ে এটি অ্যাক্সেস করা যাবে।


২. Custom Middleware তৈরি করা

ExpressJS-এ আপনি কাস্টম middleware তৈরি করতে পারেন যা আপনার অ্যাপ্লিকেশনের নির্দিষ্ট কার্যাবলী বাস্তবায়ন করবে। Custom middleware সাধারণত এক বা একাধিক রিকোয়েস্ট হ্যান্ডলার হিসেবে কাজ করে এবং রিকোয়েস্ট বা রেসপন্স অবজেক্টের উপর প্রক্রিয়া সম্পন্ন করে।

২.১. Custom Middleware উদাহরণ

Custom middleware সাধারণত রিকোয়েস্টের পরিপ্রেক্ষিতে কিছু কাজ করে এবং রেসপন্স অবজেক্টে কিছু পরিবর্তন করে। উদাহরণস্বরূপ, আমরা একটি লগিং middleware তৈরি করতে পারি যা প্রতিটি রিকোয়েস্টের সময় এবং URL লগ করবে।

ব্যবহার:

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

// Custom Middleware
app.use((req, res, next) => {
  console.log(`${req.method} request made to: ${req.url}`);
  next();  // পরবর্তী middleware বা রাউট হ্যান্ডলারের কাছে রিকোয়েস্ট পাস করে
});

app.get('/', (req, res) => {
  res.send('Home Page');
});

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

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

এখানে, middleware প্রতিটি রিকোয়েস্টের জন্য method (যেমন GET বা POST) এবং url কনসোল লগ করবে। next() ফাংশন কল করা খুবই গুরুত্বপূর্ণ, কারণ এটি রিকোয়েস্ট প্রোসেসিংকে পরবর্তী middleware বা রাউট হ্যান্ডলারের কাছে পাঠায়।

২.২. Authentication Middleware উদাহরণ

একটি সাধারণ অথেনটিকেশন middleware তৈরি করা যেতে পারে যা ইউজারের অথেনটিকেশন চেক করবে। যদি ইউজার অথেনটিকেটেড না থাকে, তবে একটি 401 (Unauthorized) স্ট্যাটাস রেসপন্স ফিরিয়ে দেওয়া হবে।

ব্যবহার:

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

// Custom Authentication Middleware
function authenticate(req, res, next) {
  const token = req.headers['authorization'];

  if (!token || token !== 'secret-token') {
    return res.status(401).send('Unauthorized');
  }

  next();  // যদি token সঠিক হয়, পরবর্তী middleware বা রাউট হ্যান্ডলার চালানো হবে
}

// এই রাউটে authenticate middleware প্রযোজ্য
app.get('/dashboard', authenticate, (req, res) => {
  res.send('Welcome to the Dashboard');
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

এখানে, /dashboard রাউটে রিকোয়েস্ট আসার আগে authenticate middleware কাজ করবে। যদি অথেনটিকেশন টোকেন সঠিক না হয়, তবে ইউজারকে "Unauthorized" রেসপন্স দেওয়া হবে।


৩. Middleware এর অর্ডার

ExpressJS-এ middleware এর অর্ডার খুবই গুরুত্বপূর্ণ। যখন আপনি app.use() বা রাউট ডিফাইন করেন, তখন সেগুলি যেভাবে কোডে রাখা হবে, সেভাবেই কাজ করবে। সাধারণত, জেনেরিক middleware (যেমন লগিং, বডি পার্সিং) প্রথমে এবং স্পেসিফিক রাউট middleware (যেমন অথেনটিকেশন) পরে ব্যবহার করা হয়।

উদাহরণ:

app.use(express.json());  // JSON বডি পার্সিং
app.use(authenticate);    // অথেনটিকেশন middleware

app.get('/profile', (req, res) => {
  res.send('User Profile');
});

এখানে, প্রথমে JSON বডি পার্সিং হবে এবং তারপর অথেনটিকেশন চেক করা হবে।


সারাংশ

ExpressJS-এ middleware হল এমন ফাংশন যা রিকোয়েস্ট এবং রেসপন্স সাইকেলের মধ্যে কার্যকর হয় এবং বিভিন্ন কার্যাবলী সম্পন্ন করতে ব্যবহৃত হয়। ExpressJS অনেক built-in middleware সরবরাহ করে যেমন express.json(), express.urlencoded(), এবং express.static()। এছাড়া, আপনি নিজে custom middleware তৈরি করে বিভিন্ন কাজ যেমন লগিং, অথেনটিকেশন, এবং কাস্টম ফিল্টারিং করতে পারেন। Middleware গুলোর অর্ডার এবং ব্যবহারের ক্ষেত্রে সতর্ক থাকা গুরুত্বপূর্ণ, কারণ এটি অ্যাপ্লিকেশনটির কার্যকারিতাকে প্রভাবিত করতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...