KoaJS একটি খুবই নমনীয় এবং কাস্টমাইজযোগ্য ফ্রেমওয়ার্ক, যা মিডলওয়্যার ব্যবস্থাপনাকে অত্যন্ত সহজ এবং শক্তিশালী করে তোলে। মিডলওয়্যার হল এমন একটি ফাংশন যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যবর্তী পর্যায়ে কাজ করে এবং রিকোয়েস্ট প্রক্রিয়া বা রেসপন্সের উপর প্রভাব ফেলতে পারে। KoaJS-এ দুই ধরনের মিডলওয়্যার ব্যবহৃত হয়: Application-level Middleware এবং Router-level Middleware।
এই মিডলওয়্যার ব্যবস্থাগুলোর ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটির কার্যকারিতা এবং ফ্লেক্সিবিলিটি উন্নত করতে পারবেন।
১. Application-level Middleware
Application-level Middleware এমন মিডলওয়্যার যা পুরো অ্যাপ্লিকেশনের জন্য কাজ করে। অর্থাৎ, যখনই কোনো রিকোয়েস্ট আসে, তখন এই মিডলওয়্যারটি সমস্ত রাউটগুলির জন্য কার্যকর হয়। এটি সাধারণত অ্যাপ্লিকেশন লেভেলের কনফিগারেশন, লগিং, অথেনটিকেশন বা অন্যান্য সাধারণ ফিচার যোগ করতে ব্যবহৃত হয়।
Application-level Middleware ব্যবহারের উদাহরণ
const Koa = require('koa');
const app = new Koa();
// Application-level Middleware (কনফিগারেশন বা লগিং)
app.use(async (ctx, next) => {
console.log(`Request method: ${ctx.method}, URL: ${ctx.url}`);
await next(); // পরবর্তী মিডলওয়্যার বা রাউটার কল করুন
});
// একটি রুট তৈরি করা
app.use(async ctx => {
ctx.body = 'Hello, Koa!';
});
// সার্ভার চালু করা
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
এখানে, app.use() দ্বারা যে মিডলওয়্যারটি ব্যবহৃত হয়েছে, এটি অ্যাপ্লিকেশনের সব রিকোয়েস্টের জন্য কার্যকর হবে। এটি রিকোয়েস্টের HTTP মেথড এবং URL লগ করবে এবং এরপর next() কল করে পরবর্তী মিডলওয়্যার বা রাউটারের কাজ চালিয়ে যাবে।
২. Router-level Middleware
Router-level Middleware হল এমন মিডলওয়্যার যা নির্দিষ্ট রাউট বা রাউটার গ্রুপের জন্য ব্যবহৃত হয়। KoaJS-এ রাউটিং পরিচালনার জন্য koa-router প্যাকেজ ব্যবহার করা হয়। এই মিডলওয়্যার শুধুমাত্র সেই রাউট বা রাউটার গ্রুপে কার্যকর হয়, যেখানে এটি সংযুক্ত করা হয়।
Router-level Middleware ব্যবহারের উদাহরণ
প্রথমে, koa-router ইনস্টল করতে হবে:
npm install koa-router
এখন, একটি koa-router ব্যবহার করে রাউটার-লেভেল মিডলওয়্যার তৈরি করা যাক:
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
// Router-level Middleware
router.use(async (ctx, next) => {
console.log(`Router-level Middleware: ${ctx.method} ${ctx.url}`);
await next(); // পরবর্তী রাউট বা মিডলওয়্যার কল করুন
});
// একটি রাউট তৈরি করা
router.get('/', ctx => {
ctx.body = 'Home Page';
});
// আরো রাউট যোগ করা
router.get('/about', ctx => {
ctx.body = 'About Page';
});
// কনফিগারেশন অ্যাপ্লিকেশন এবং রাউটার
app.use(router.routes()).use(router.allowedMethods());
// সার্ভার চালু করা
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
এখানে, router.use() দ্বারা যে মিডলওয়্যারটি ব্যবহৃত হয়েছে, এটি শুধুমাত্র সেই রাউটগুলির জন্য কার্যকর হবে যেগুলি router দ্বারা সংজ্ঞায়িত হয়েছে। এই মিডলওয়্যারটি শুধুমাত্র / এবং /about রাউটের জন্য লগিং করবে।
Application-level এবং Router-level Middleware এর মধ্যে পার্থক্য
Application-level Middleware:
- অ্যাপ্লিকেশনের সব রিকোয়েস্টের জন্য কার্যকর।
- এটি সাধারণত গ্লোবাল কার্যাবলী যেমন লগিং, অথেনটিকেশন, কনফিগারেশন বা ক্যাচিং জন্য ব্যবহৃত হয়।
- একাধিক রাউটের জন্য একই মিডলওয়্যার প্রয়োগ করা হয়।
Router-level Middleware:
- শুধুমাত্র নির্দিষ্ট রাউট বা রাউট গ্রুপের জন্য কার্যকর।
- এটি নির্দিষ্ট রাউটগুলির জন্য মিডলওয়্যার পরিচালনা করতে ব্যবহৃত হয়।
- একাধিক রাউটের জন্য ভিন্ন মিডলওয়্যার ব্যবহার করা যায়।
সারাংশ
KoaJS-এ Application-level Middleware এবং Router-level Middleware দুটি গুরুত্বপূর্ণ কনসেপ্ট, যা রিকোয়েস্ট হ্যান্ডলিং এবং অ্যাপ্লিকেশনের কার্যকারিতা বাড়াতে ব্যবহৃত হয়। Application-level Middleware অ্যাপ্লিকেশনটির সকল রিকোয়েস্টে কাজ করে, যখন Router-level Middleware নির্দিষ্ট রাউট বা রাউটার গ্রুপে কাজ করে। এগুলি ব্যবহার করে আপনি আপনার KoaJS অ্যাপ্লিকেশনকে আরও কাস্টমাইজড, সুনির্দিষ্ট এবং শক্তিশালী করতে পারেন।
Read more