ExpressJS-এ URL Parameters এবং Query Strings ব্যবহার করে ডায়নামিক ডেটা সার্ভার থেকে পাঠানো এবং গ্রহণ করা যায়। এটি ওয়েব অ্যাপ্লিকেশন বা API-এর জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ এর মাধ্যমে ইউজারের ইনপুট বা অনুসন্ধান ভিত্তিক ডেটা প্রাপ্তি এবং প্রক্রিয়া করা সহজ হয়।
১. URL Parameters (Path Parameters)
URL Parameters বা Path Parameters হল URL-এর অংশ যা ইউজারের কাছ থেকে তথ্য গ্রহণ করতে ব্যবহৃত হয়। এটি URL-এ কলন (:) চিহ্নের পরে নির্দিষ্ট নামের সাথে ব্যবহার করা হয়। ExpressJS-এ, URL Parameters সাধারণত রাউটের অংশ হিসেবে ব্যবহার করা হয় এবং req.params এর মাধ্যমে অ্যাক্সেস করা হয়।
উদাহরণ:
ধরা যাক, আপনি একটি ওয়েব অ্যাপ তৈরি করছেন যেখানে ইউজারের আইডি অনুসারে তাদের তথ্য দেখাতে হবে। আপনি এই রকম রাউট তৈরি করতে পারেন:
const express = require('express');
const app = express();
// ইউজার আইডি সহ রাউট
app.get('/user/:id', (req, res) => {
const userId = req.params.id; // URL থেকে 'id' প্যারামিটার নেওয়া হচ্ছে
res.send(`User ID is: ${userId}`);
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
এখানে /user/:id রাউটটিতে :id একটি URL প্যারামিটার, যার মাধ্যমে ক্লায়েন্ট URL-এর মধ্যে একটি ভ্যালু পাঠাবে। উদাহরণস্বরূপ, যদি ইউজার /user/123 URL এ যায়, তাহলে req.params.id এ 123 পাওয়া যাবে।
উদাহরণ URL:
http://localhost:3000/user/123
Output:
User ID is: 123
আপনি একাধিক URL প্যারামিটারও ব্যবহার করতে পারেন:
app.get('/user/:id/posts/:postId', (req, res) => {
const userId = req.params.id;
const postId = req.params.postId;
res.send(`User ID: ${userId}, Post ID: ${postId}`);
});
২. Query Strings
Query Strings হল URL-এর অংশ যা ? দিয়ে শুরু হয় এবং প্যারামিটার-ভ্যালু পেয়ার দিয়ে গঠিত হয়। Query Strings ডেটা পাঠানোর জন্য ব্যবহৃত হয়, যা URL-এর শেষে যোগ করা হয়। ExpressJS-এ, Query Strings-এ থাকা ডেটা req.query এর মাধ্যমে অ্যাক্সেস করা যায়।
উদাহরণ:
ধরা যাক, আপনি একটি সার্চ ফিচার তৈরি করছেন, যেখানে ইউজার একটি কিওয়ার্ড দিয়ে সার্চ করবে। ইউজারের সার্চ কিওয়ার্ডটি URL-এর Query String হিসেবে পাঠানো হবে। ExpressJS-এ এর জন্য req.query ব্যবহার করা হবে।
app.get('/search', (req, res) => {
const query = req.query.q; // Query String থেকে 'q' প্যারামিটার নেওয়া হচ্ছে
res.send(`You searched for: ${query}`);
});
এখানে /search?q=apple রিকোয়েস্ট আসলে req.query.q এ apple পাওয়া যাবে।
উদাহরণ URL:
http://localhost:3000/search?q=apple
Output:
You searched for: apple
Query Strings-এ একাধিক প্যারামিটারও ব্যবহার করা যেতে পারে:
app.get('/search', (req, res) => {
const query = req.query.q;
const page = req.query.page || 1; // পেজ প্যারামিটার (যদি না দেওয়া হয়, তাহলে ১)
res.send(`You searched for: ${query} on page ${page}`);
});
এখানে, /search?q=apple&page=2 রিকোয়েস্ট আসলে req.query.q এ apple এবং req.query.page এ 2 পাওয়া যাবে।
উদাহরণ URL:
http://localhost:3000/search?q=apple&page=2
Output:
You searched for: apple on page 2
৩. URL Parameters এবং Query Strings একসাথে ব্যবহার করা
এ sometimes, আপনি একই রাউটে URL Parameters এবং Query Strings একসাথে ব্যবহার করতে পারেন। ExpressJS-এ এটি খুবই সহজ, কারণ req.params এবং req.query আলাদা আলাদা ভ্যালু হ্যান্ডল করে।
উদাহরণ:
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
const filter = req.query.filter || 'all'; // ফিল্টার প্যারামিটার (যদি না দেওয়া হয়, 'all')
res.send(`User ID: ${userId}, Filter: ${filter}`);
});
এখানে, /user/:id URL Parameters-এ ইউজারের আইডি এবং Query String-এ ফিল্টার প্যারামিটার ব্যবহার করা হচ্ছে।
উদাহরণ URL:
http://localhost:3000/user/123?filter=active
Output:
User ID: 123, Filter: active
সারাংশ
ExpressJS-এ URL Parameters এবং Query Strings দুটি গুরুত্বপূর্ণ কনসেপ্ট যা ওয়েব অ্যাপ্লিকেশন বা API-এর রাউটিং, ডেটা গ্রহণ এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়।
- URL Parameters (Path Parameters) URL-এর অংশ হিসেবে তথ্য পাঠায় এবং
req.paramsএর মাধ্যমে অ্যাক্সেস করা হয়। এটি সাধারণত ডায়নামিক রাউট তৈরি করতে ব্যবহৃত হয়। - Query Strings URL-এর শেষে
?দিয়ে শুরু হয় এবং বিভিন্ন প্যারামিটার-ভ্যালু পেয়ার ধারণ করে। এটি সাধারণত ফিল্টার, অনুসন্ধান, পেজিনেশন ইত্যাদির জন্য ব্যবহৃত হয় এবংreq.queryএর মাধ্যমে অ্যাক্সেস করা হয়।
এই দুটি কৌশল আপনাকে অ্যাপ্লিকেশন বা API ডেভেলপমেন্টে আরও ডায়নামিক এবং শক্তিশালী রাউট তৈরি করতে সহায়তা করবে।
ExpressJS-এ URL Parameters (যেমন Route Parameters) ব্যবহার করে আপনি URL-এর অংশ হিসেবে ডাইনামিক ডেটা প্রাপ্তি করতে পারেন। এই URL Parameters এক্সপ্রেস অ্যাপ্লিকেশনের বিভিন্ন রাউটের জন্য ডাইনামিক ভ্যালু সংগ্রহ করতে সহায়ক হয়।
ExpressJS-এ URL Parameters দুটি প্রধানভাবে ব্যবহৃত হয়: Route Parameters এবং Query Parameters। এখানে আমরা শুধু Route Parameters (যা URL এর অংশ হিসেবে থাকে) নিয়ে আলোচনা করব।
১. Route Parameters (রাউট প্যারামিটার)
রাউট প্যারামিটার হল সেই অংশ যা URL-এর মধ্যে : (কলন) চিহ্ন দিয়ে ডাইনামিকভাবে সংজ্ঞায়িত করা হয়। এগুলি অ্যাপ্লিকেশনকে URL থেকে ইনপুট হিসেবে ডেটা গ্রহণ করতে সক্ষম করে।
২. Route Parameters ব্যবহার করা
ExpressJS-এ রাউট প্যারামিটার ব্যবহারের জন্য সাধারণত /somepath/:parameterName ফর্ম্যাটে URL নির্ধারণ করা হয়। এরপর req.params অবজেক্ট ব্যবহার করে এই প্যারামিটারগুলিকে অ্যাক্সেস করা হয়।
২.১. রাউট প্যারামিটার হ্যান্ডলিংয়ের উদাহরণ:
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}`);
});
এখানে, /user/:id URL-এ :id প্যারামিটারটি ডাইনামিকভাবে পরিমাণ গ্রহণ করবে। যখন ব্যবহারকারী http://localhost:3000/user/123 URL-এ যাবে, তখন 123 এর মান req.params.id দ্বারা অ্যাক্সেস করা হবে এবং রেসপন্সে "User ID is: 123" দেখানো হবে।
২.২. একাধিক রাউট প্যারামিটার ব্যবহার
আপনি একাধিক প্যারামিটারও ব্যবহার করতে পারেন, উদাহরণস্বরূপ:
app.get('/user/:id/:action', (req, res) => {
const { id, action } = req.params;
res.send(`User ID: ${id}, Action: ${action}`);
});
এখন, যদি ব্যবহারকারী http://localhost:3000/user/123/edit URL-এ যায়, তাহলে আপনি রেসপন্সে "User ID: 123, Action: edit" দেখবেন।
২.৩. রাউট প্যারামিটার টেমপ্লেট ব্যবহার
আপনি আরও ডাইনামিক রাউট তৈরি করতে পারবেন যেখানে URL-এর অংশের মধ্যে বিভিন্ন ধরণের প্যারামিটার ব্যবহার করা হবে।
উদাহরণ:
app.get('/product/:category/:id', (req, res) => {
const { category, id } = req.params;
res.send(`Product Category: ${category}, Product ID: ${id}`);
});
এখন, http://localhost:3000/product/electronics/567 URL-এ গিয়ে রেসপন্স হিসেবে "Product Category: electronics, Product ID: 567" দেখবেন।
৩. Route Parameters ভ্যালিডেশন
যদি আপনি চান যে রাউট প্যারামিটারটি একটি নির্দিষ্ট ধরণের (যেমন সংখ্যামূলক) হওয়া উচিত, তাহলে আপনি middleware ব্যবহার করে এটি যাচাই করতে পারেন।
উদাহরণ:
app.get('/user/:id', (req, res, next) => {
const userId = req.params.id;
// প্যারামিটারটি সংখ্যামূলক কিনা যাচাই করা
if (isNaN(userId)) {
res.status(400).send('Invalid User ID');
} else {
next();
}
}, (req, res) => {
const userId = req.params.id;
res.send(`User ID is: ${userId}`);
});
এখানে, যদি id প্যারামিটারটি সংখ্যা না হয়, তবে একটি 400 Invalid User ID এরর রেসপন্স দেওয়া হবে, এবং যদি এটি সংখ্যা হয়, তবে রাউটের পরবর্তী হ্যান্ডলারটি কার্যকর হবে।
৪. Route Parameters এবং Query Strings একত্রে ব্যবহার
ExpressJS-এ আপনি রাউট প্যারামিটার এবং কুয়েরি স্ট্রিং একসাথে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যখন কোনো রাউট প্যারামিটার ব্যবহার করা হয়, তখন একই রাউটে কুয়েরি স্ট্রিং যোগ করা যায়।
উদাহরণ:
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
const filter = req.query.filter; // কুয়েরি স্ট্রিং থেকে filter নেয়া হচ্ছে
res.send(`User ID: ${userId}, Filter: ${filter}`);
});
এখন, যদি আপনি URL দিয়ে http://localhost:3000/user/123?filter=active যান, তাহলে আপনি রেসপন্স হিসেবে "User ID: 123, Filter: active" দেখতে পাবেন।
৫. Optional Route Parameters (ঐচ্ছিক প্যারামিটার)
ExpressJS-এ URL প্যারামিটার ঐচ্ছিকও হতে পারে। এর জন্য আপনি রাউটের প্যারামিটারটি একটি কুয়েরি স্ট্রিং হিসেবে ব্যবহার করতে পারেন বা ? চিহ্ন ব্যবহার করতে পারেন।
উদাহরণ:
app.get('/user/:id?', (req, res) => {
const userId = req.params.id || 'Guest';
res.send(`User ID: ${userId}`);
});
এখানে, /user/ URL গেলে userId হিসেবে Guest প্রদর্শিত হবে, এবং /user/123 URL গেলে User ID: 123 দেখাবে।
সারাংশ
ExpressJS-এ URL প্যারামিটারগুলি অ্যাপ্লিকেশনের রাউট ডাইনামিক এবং নমনীয় করে তোলে। req.params ব্যবহার করে আপনি রাউট প্যারামিটারগুলো অ্যাক্সেস করতে পারেন এবং সেগুলির মাধ্যমে বিভিন্ন ধরনের ডাইনামিক ডেটা গ্রহণ করতে পারেন। একাধিক প্যারামিটার ব্যবহার, ভ্যালিডেশন, এবং কুয়েরি স্ট্রিংয়ের সাথে একত্রে কাজ করার মাধ্যমে আপনি আরও ফ্লেক্সিবল এবং শক্তিশালী রাউট তৈরি করতে পারবেন। ExpressJS এর এই ক্ষমতা অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও সহজ এবং কার্যকর করে তোলে।
Query Strings URL এর অংশ হিসেবে ব্যবহার করা হয় যাতে কোনো নির্দিষ্ট ডেটা বা প্যারামিটার পাঠানো যায়। এই প্যারামিটারগুলি সাধারণত ? চিহ্নের পর আসে এবং একাধিক প্যারামিটার & দ্বারা আলাদা হয়। ExpressJS এর মধ্যে query strings খুব সহজেই ব্যবহার করা যায় এবং তা অ্যাপ্লিকেশনের বিভিন্ন রাউটে ডেটা গ্রহণ করতে সহায়ক হয়।
Query Strings কী?
Query strings URL এর পরবর্তী অংশ হিসেবে থাকে যা কোনো নির্দিষ্ট তথ্য বা প্যারামিটার পাস করতে ব্যবহৃত হয়। এটি সাধারনত পেজের মধ্যে ডেটা ফিল্টার, সার্চ, বা পেজিনেশন ব্যবহারের জন্য ব্যবহৃত হয়।
একটি query string এর সাধারণ কাঠামো:
https://example.com/search?q=express&page=2
এখানে:
q=express→qপ্যারামিটার এবং তার মানexpress।page=2→pageপ্যারামিটার এবং তার মান2।
ExpressJS এ Query Strings ব্যবহার
ExpressJS এ query strings গ্রহণ করা খুবই সহজ। req.query অবজেক্টটি ব্যবহার করে আপনি query string এর প্যারামিটারগুলো সহজে এক্সেস করতে পারবেন।
১. Query String গ্রহণ করা
ধরা যাক, আপনার অ্যাপ্লিকেশনে একটি সার্চ ফিচার রয়েছে, যেখানে ইউজার কিছু কিওয়ার্ড অনুসন্ধান করতে পারবেন। এর জন্য URL এ একটি query string থাকতে হবে, যেমন ?q=express।
const express = require('express');
const app = express();
const port = 3000;
// সার্চ রাউট
app.get('/search', (req, res) => {
// query string থেকে 'q' প্যারামিটার গ্রহণ
const query = req.query.q;
if (query) {
res.send(`Search results for: ${query}`);
} else {
res.send('No search query provided.');
}
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
এখানে:
req.query.qদ্বারা আমরা query string থেকেqপ্যারামিটারটি গ্রহণ করছি।- যদি
qপ্যারামিটার পাওয়া যায়, তবে সার্চ রেজাল্ট দেখানো হবে, না হলে "No search query provided." বার্তা দেখাবে।
২. একাধিক Query String প্যারামিটার গ্রহণ
একাধিক query string প্যারামিটার একসাথে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, পেজিনেশন এবং কিওয়ার্ড অনুসন্ধান একত্রে করা।
app.get('/search', (req, res) => {
const query = req.query.q;
const page = req.query.page || 1; // ডিফল্টভাবে পেজ 1
const limit = req.query.limit || 10; // ডিফল্টভাবে 10 রেকর্ড
res.send(`Searching for: ${query}, Page: ${page}, Limit: ${limit}`);
});
এখানে:
- ইউজার যদি
q,page, এবংlimitপ্যারামিটার দেয়, তবে সেগুলি একে একেreq.query.q,req.query.page, এবংreq.query.limitদ্বারা এক্সেস করা হবে। - যদি কোনো প্যারামিটার না দেয়া হয়, তবে ডিফল্ট মান ব্যবহার করা হবে।
URL উদাহরণ:
/search?q=express&page=2&limit=5
এটি q এর মান হিসেবে "express", page হিসেবে 2, এবং limit হিসেবে 5 গ্রহণ করবে।
৩. Query String এর মাধ্যমে ফিল্টারিং
Query strings এর মাধ্যমে আপনি ডেটাকে ফিল্টার করতে পারেন। উদাহরণস্বরূপ, আপনি একটি প্রোডাক্ট লিস্টিং পেজ তৈরি করতে পারেন যেখানে ইউজার নির্দিষ্ট ক্যাটেগরি বা প্রাইস রেঞ্জ দিয়ে ফিল্টার করতে পারবে।
app.get('/products', (req, res) => {
const category = req.query.category;
const minPrice = req.query.minPrice || 0;
const maxPrice = req.query.maxPrice || 1000;
res.send(`Filtering products in category: ${category}, Price range: ${minPrice} to ${maxPrice}`);
});
এখানে:
categoryএবংminPrice,maxPriceপ্যারামিটার দ্বারা প্রোডাক্ট ফিল্টার করা হবে।
URL উদাহরণ:
/products?category=electronics&minPrice=100&maxPrice=500
এটি প্রোডাক্ট ফিল্টার করবে যেখানে ক্যাটেগরি electronics, এবং প্রাইস রেঞ্জ হবে 100 থেকে 500।
৪. Optional Query Parameters
Query strings এর প্যারামিটারগুলি কখনো কখনো ঐচ্ছিক (optional) হতে পারে। আপনি চাইলে ডিফল্ট মান দিতে পারেন যাতে যদি প্যারামিটার না থাকে, তবে অ্যাপ্লিকেশন কিছু নির্দিষ্ট আচরণ দেখায়।
app.get('/filter', (req, res) => {
const sortBy = req.query.sortBy || 'name'; // ডিফল্টভাবে নাম অনুসারে সাজানো
const order = req.query.order || 'asc'; // ডিফল্টভাবে আর্ডার 'asc'
res.send(`Sorting by: ${sortBy}, Order: ${order}`);
});
এখানে:
- যদি
sortByবাorderপ্যারামিটার না দেয়া হয়, তবে ডিফল্টভাবেnameএবংascব্যবহার করা হবে।
URL উদাহরণ:
/filter?sortBy=price&order=desc
এটি প্রিন্ট করবে: Sorting by: price, Order: desc।
৫. Query String এর মাধ্যমে URL Encoding
যখন query strings পাঠানো হয়, তখন কিছু বিশেষ চিহ্ন যেমন স্পেস, অক্ষর বা সিম্বল (যেমন: &, =, ?) URL এর অংশ হিসেবে প্রাসঙ্গিক হতে পারে। সুতরাং, ইউআরএলে কোনো স্পেস বা বিশেষ চিহ্ন থাকতে পারলে সেগুলো URL encode করা প্রয়োজন। URL encoding করার জন্য JavaScript এ encodeURIComponent() ফাংশন ব্যবহার করা হয়।
const query = encodeURIComponent("search term with spaces");
console.log(query); // "search%20term%20with%20spaces"
এটি URL এ প্যারামিটার হিসেবে পাঠানোর আগে স্পেস এবং অন্যান্য বিশেষ চিহ্নগুলো এনকোড করে দেবে।
সারাংশ
ExpressJS এ query strings ব্যবহার করে আপনি ইউআরএল এর মাধ্যমে প্যারামিটার পাস করতে পারেন এবং এই প্যারামিটারগুলোকে req.query অবজেক্টের মাধ্যমে এক্সেস করতে পারেন। Query strings খুবই উপকারী যখন আপনাকে ইউজারের ইনপুট, সার্চ কিওয়ার্ড, পেজিনেশন বা ফিল্টারিং অপশন গ্রহণ করতে হয়। ExpressJS সহজে এই ডেটা গ্রহণ ও প্রসেস করার সুবিধা দেয়, যা আপনাকে আরও ডাইনামিক ও ইন্টারঅ্যাকটিভ ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়ক হয়।
ExpressJS এর মাধ্যমে আপনি বিভিন্ন HTTP রিকোয়েস্ট যেমন GET এবং POST রিকোয়েস্ট প্রক্রিয়া করতে পারেন। GET রিকোয়েস্ট সাধারণত ইউআরএল থেকে ডেটা নিয়ে আসে, এবং POST রিকোয়েস্টের মাধ্যমে ইউজার বা ক্লায়েন্ট সার্ভারে ডেটা পাঠায়। ExpressJS এ এই রিকোয়েস্ট প্রক্রিয়া করতে বেশ কিছু সহজ উপায় রয়েছে।
GET রিকোয়েস্ট
GET রিকোয়েস্ট সাধারণত ব্রাউজারে ইউআরএল টাইপ করার মাধ্যমে অথবা কোনো লিঙ্ক ক্লিক করার মাধ্যমে হয়। এই রিকোয়েস্টে ডেটা সাধারণত ইউআরএলের প্যারামিটার হিসেবে পাঠানো হয়।
১. GET রিকোয়েস্ট প্রক্রিয়া করা
ExpressJS-এ GET রিকোয়েস্ট প্রক্রিয়া করার জন্য app.get() ফাংশন ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:
const express = require('express');
const app = express();
const port = 3000;
// GET রিকোয়েস্ট হ্যান্ডলার
app.get('/', (req, res) => {
res.send('Hello, this is a GET request!');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
এখানে:
/পাথের জন্য একটি GET রিকোয়েস্ট হ্যান্ডলার সেট করা হয়েছে।- রিকোয়েস্ট আসলে এটি
Hello, this is a GET request!পাঠাবে।
২. URL প্যারামিটার দিয়ে GET রিকোয়েস্ট
GET রিকোয়েস্টে আপনি ইউআরএলের মধ্যে ডেটা প্যারামিটার হিসেবে পাঠাতে পারেন। উদাহরণস্বরূপ:
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
res.send(`User ID is: ${userId}`);
});
এখানে:
/user/:idরাউটে:idএকটি প্যারামিটার যা ইউআরএল থেকে ডাইনামিকভাবে গ্রহণ করা হয়। যেমন,/user/123রিকোয়েস্টেuserId = 123হবে।
৩. GET রিকোয়েস্টে Query Parameters
GET রিকোয়েস্টে আপনি URL-এ query parameters পাঠাতে পারেন, যা req.query দ্বারা এক্সেস করা হয়।
app.get('/search', (req, res) => {
const query = req.query.q; // ?q=express
res.send(`Search results for: ${query}`);
});
এখানে:
/search?q=expressএ গেলেqপ্যারামিটার গ্রহণ করা হবে এবং"Search results for: express"রেসপন্স পাঠানো হবে।
POST রিকোয়েস্ট
POST রিকোয়েস্ট সাধারণত ক্লায়েন্ট থেকে সার্ভারে ডেটা পাঠানোর জন্য ব্যবহৃত হয়, যেমন ফর্ম সাবমিট করা বা JSON ডেটা পাঠানো। POST রিকোয়েস্টে ডেটা সাধারণত রিকোয়েস্ট বডিতে পাঠানো হয়।
১. POST রিকোয়েস্ট প্রক্রিয়া করা
ExpressJS-এ POST রিকোয়েস্ট প্রক্রিয়া করতে app.post() ফাংশন ব্যবহার করা হয়। উদাহরণস্বরূপ:
app.post('/submit', (req, res) => {
res.send('POST request received!');
});
এখানে:
/submitপাথের জন্য POST রিকোয়েস্ট হ্যান্ডলার সেট করা হয়েছে।
২. POST রিকোয়েস্টে JSON ডেটা পাঠানো
আপনি POST রিকোয়েস্টে JSON ডেটা পাঠাতে পারেন, এবং ExpressJS-এ JSON ডেটা প্রক্রিয়া করার জন্য express.json() middleware ব্যবহার করা হয়। উদাহরণস্বরূপ:
app.use(express.json()); // JSON ডেটা পার্স করার জন্য middleware
app.post('/user', (req, res) => {
const user = req.body; // POST ডেটা গ্রহণ
res.send(`User created with name: ${user.name}`);
});
এখানে:
express.json()middleware রিকোয়েস্টের বডি থেকে JSON ডেটা পার্স করে।req.bodyএর মাধ্যমে সেই ডেটা অ্যাক্সেস করা যায়। উদাহরণস্বরূপ, যদি{ "name": "John Doe" }ডেটা POST করা হয়, তাহলে"User created with name: John Doe"রেসপন্স দেওয়া হবে।
৩. POST রিকোয়েস্টে URL Encoded ডেটা পাঠানো
অন্য একটি সাধারণ পদ্ধতি হল URL-encoded ডেটা পাঠানো, যা HTML ফর্মের মাধ্যমে প্রেরিত হয়। ExpressJS-এ এই ধরনের ডেটা প্রক্রিয়া করার জন্য express.urlencoded() middleware ব্যবহার করা হয়।
app.use(express.urlencoded({ extended: true })); // URL-encoded ডেটা পার্স করার জন্য middleware
app.post('/form', (req, res) => {
const name = req.body.name; // ফর্ম ডেটা গ্রহণ
res.send(`Form submitted with name: ${name}`);
});
এখানে:
- ফর্মে
nameইনপুট করা হলে, এটিreq.body.nameএর মাধ্যমে এক্সেস করা যাবে। - URL-encoded ডেটা POST করলে, যেমন:
name=John Doe, তাreq.bodyএ প্রাপ্ত হবে।
GET এবং POST রিকোয়েস্টের মধ্যে পার্থক্য
| বৈশিষ্ট্য | GET রিকোয়েস্ট | POST রিকোয়েস্ট |
|---|---|---|
| উদ্দেশ্য | সার্ভার থেকে ডেটা আনা | সার্ভারে ডেটা পাঠানো |
| ডেটার অবস্থান | ইউআরএল প্যারামিটার বা Query String | রিকোয়েস্ট বডি |
| নিরাপত্তা | কম, কারণ ডেটা ইউআরএলে থাকে | বেশি, কারণ ডেটা রিকোয়েস্ট বডিতে থাকে |
| ক্যাশিং | GET রিকোয়েস্ট সাধারণত ক্যাশ করা হয় | POST রিকোয়েস্ট ক্যাশ করা হয় না |
| সুরক্ষা | কম সুরক্ষিত (ডেটা URL-এ থাকে) | বেশি সুরক্ষিত (ডেটা বডিতে থাকে) |
সারাংশ
ExpressJS এ GET এবং POST রিকোয়েস্ট প্রক্রিয়া করার জন্য সহজ এবং শক্তিশালী উপায় সরবরাহ করে। GET রিকোয়েস্ট সাধারণত ইউআরএল থেকে ডেটা আনতে ব্যবহৃত হয়, যেখানে POST রিকোয়েস্ট ক্লায়েন্ট থেকে সার্ভারে ডেটা পাঠানোর জন্য ব্যবহৃত হয়। ExpressJS এর মাধ্যমে আপনি URL প্যারামিটার, query parameters, এবং বডি ডেটা সহজেই প্রক্রিয়া করতে পারেন, যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে অত্যন্ত কার্যকর।
ExpressJS-এ Router হল একটি বিশেষ উপাদান যা বিভিন্ন রাউট এবং রাউট হ্যান্ডলার গ্রুপ করার জন্য ব্যবহৃত হয়। এটি ডেটা সংরক্ষণ (বা তৈরি, আপডেট, পড়া) এর জন্য ব্যবহার করা যেতে পারে, বিশেষ করে যখন আপনি ডেটাবেসের সাথে কাজ করছেন। Express Router এর মাধ্যমে ডেটা সংরক্ষণ করার জন্য, সাধারণত HTTP POST, PUT, এবং DELETE রিকোয়েস্টগুলো ব্যবহার করা হয়।
এই গাইডে, Express Router ব্যবহার করে ডেটা সংরক্ষণের একটি সাধারণ উদাহরণ দেখানো হবে।
১. Express Router কি?
Express Router হল Express অ্যাপ্লিকেশনে ব্যবহৃত একটি মডুলার উপাদান, যা রাউটের কাজগুলি আলাদা ফাইলে গ্রুপ করতে সাহায্য করে। এর মাধ্যমে অ্যাপ্লিকেশনকে মডুলার এবং স্কেলেবল করা সহজ হয়।
এটি ডেটাবেস অপারেশন বা অন্যান্য লজিক সম্পাদন করতে পারে, যেমন:
- ডেটা তৈরি করা (POST)
- ডেটা পড়া (GET)
- ডেটা আপডেট করা (PUT)
- ডেটা মুছে ফেলা (DELETE)
২. Express Router এর মাধ্যমে ডেটা সংরক্ষণ
এখানে একটি উদাহরণ দিয়ে বোঝানো হবে কিভাবে Express Router ব্যবহার করে একটি সিম্পল API তৈরি করা যায় যা ডেটা সংরক্ষণ, আপডেট, এবং মুছে ফেলার কাজ করবে।
ধরা যাক, আমাদের একটি সিম্পল "User" অবজেক্ট তৈরি করতে হবে।
৩. প্রকল্পের জন্য ডিরেক্টরি ও ফাইল স্ট্রাকচার
my-express-app/
│
├── node_modules/ # ইনস্টল হওয়া প্যাকেজ
├── routes/ # রাউট ফোল্ডার
│ └── userRouter.js # ইউজার রাউট ফাইল
├── app.js # মূল অ্যাপ্লিকেশন ফাইল
├── package.json # প্যাকেজ কনফিগারেশন
└── package-lock.json # নির্দিষ্ট সংস্করণে প্যাকেজের ডিপেনডেন্সি
৪. app.js ফাইল তৈরি করা
এটি মূল অ্যাপ্লিকেশন ফাইল যেখানে আমরা Express এবং Router কনফিগার করব।
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
// রাউট ব্যবহার করার জন্য
const userRouter = require('./routes/userRouter');
// JSON প্যারসিং Middleware
app.use(bodyParser.json());
// রাউট ব্যবহার
app.use('/api/users', userRouter);
// সার্ভার চালু করা
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
body-parser.json(): এটি রিকোয়েস্ট বডি থেকে JSON ডেটা পার্স করতে ব্যবহৃত হয়।
৫. routes/userRouter.js ফাইল তৈরি করা
এখানে, আমরা User সম্পর্কিত রাউটগুলি তৈরি করব, যেমন ডেটা তৈরি, পড়া, আপডেট করা, এবং মুছে ফেলা।
const express = require('express');
const router = express.Router();
// সিম্পল ডেটা (প্রকৃত ডেটাবেসের পরিবর্তে এটি মেমোরিতে সংরক্ষণ)
let users = [
{ id: 1, name: 'John Doe', email: 'john@example.com' },
{ id: 2, name: 'Jane Smith', email: 'jane@example.com' }
];
// ১. GET রাউট: সমস্ত ইউজার পড়া
router.get('/', (req, res) => {
res.json(users);
});
// ২. POST রাউট: নতুন ইউজার তৈরি
router.post('/', (req, res) => {
const { name, email } = req.body;
// নতুন ইউজার তৈরি করা
const newUser = {
id: users.length + 1,
name,
email
};
users.push(newUser);
res.status(201).json(newUser); // 201: Created
});
// ৩. PUT রাউট: ইউজার আপডেট
router.put('/:id', (req, res) => {
const { id } = req.params;
const { name, email } = req.body;
let user = users.find(user => user.id === parseInt(id));
if (!user) {
return res.status(404).json({ message: 'User not found' });
}
// ইউজার আপডেট করা
user.name = name;
user.email = email;
res.json(user);
});
// ৪. DELETE রাউট: ইউজার মুছে ফেলা
router.delete('/:id', (req, res) => {
const { id } = req.params;
let userIndex = users.findIndex(user => user.id === parseInt(id));
if (userIndex === -1) {
return res.status(404).json({ message: 'User not found' });
}
// ইউজার মুছে ফেলা
users.splice(userIndex, 1);
res.status(204).send(); // 204: No Content
});
module.exports = router;
কোড ব্যাখ্যা:
GET '/': সমস্ত ইউজারের তথ্য পাঠাবে।POST '/': নতুন ইউজার তৈরি করবে এবং সেটি মেমোরিতে সংরক্ষণ করবে।PUT '/:id': নির্দিষ্ট ইউজারের তথ্য আপডেট করবে।DELETE '/:id': নির্দিষ্ট ইউজার মুছে ফেলবে।
৬. Express Router দিয়ে ডেটা সংরক্ষণ এবং পরীক্ষা করা
এখন, আপনার অ্যাপ চালু করতে node app.js কমান্ডটি ব্যবহার করুন।
এবার আপনি Postman বা ব্রাউজারের মাধ্যমে API রিকোয়েস্ট পাঠাতে পারেন:
GET রিকোয়েস্ট - সমস্ত ইউজার দেখার জন্য:
GET http://localhost:3000/api/usersPOST রিকোয়েস্ট - নতুন ইউজার তৈরি করার জন্য:
POST http://localhost:3000/api/users Body: { "name": "Alice", "email": "alice@example.com" }PUT রিকোয়েস্ট - ইউজারের তথ্য আপডেট করার জন্য:
PUT http://localhost:3000/api/users/1 Body: { "name": "John Updated", "email": "john.updated@example.com" }DELETE রিকোয়েস্ট - ইউজার মুছে ফেলার জন্য:
DELETE http://localhost:3000/api/users/2
সারাংশ
ExpressJS-এ Router ব্যবহার করে ডেটা সংরক্ষণ করার প্রক্রিয়া অত্যন্ত সহজ এবং শক্তিশালী। আপনি Router ব্যবহার করে বিভিন্ন HTTP মেথড (GET, POST, PUT, DELETE) এর মাধ্যমে ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলতে পারেন। এটি আপনার অ্যাপ্লিকেশনকে মডুলার এবং সুসংগঠিত করতে সাহায্য করে, যেখানে প্রতিটি রাউট আলাদা ফাইলে থাকে এবং সহজেই রিকোয়েস্ট-রেসপন্স হ্যান্ডলিং করা যায়।
Read more