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 সহজে এই ডেটা গ্রহণ ও প্রসেস করার সুবিধা দেয়, যা আপনাকে আরও ডাইনামিক ও ইন্টারঅ্যাকটিভ ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়ক হয়।
Read more