Next.js এর API Routes ফিচারটি একটি শক্তিশালী উপায় যে কোনো সার্ভার-সাইড লজিক লিখতে এবং HTTP রিকোয়েস্ট ও রেসপন্স হ্যান্ডল করতে। এটি আপনার অ্যাপ্লিকেশনকে পূর্ণাঙ্গ ব্যাকএন্ড ফিচার প্রদান করে, যেমন ডাটাবেস ইন্টারঅ্যাকশন, অথেনটিকেশন, এবং অন্যান্য সার্ভিস ব্যবস্থাপনা।
এখানে আমরা দেখব কিভাবে Next.js এর API Routes ব্যবহার করে Request এবং Response হ্যান্ডল করা যায়।
১. API Routes তৈরি করা
Next.js এ API Routes তৈরি করার জন্য pages/api/ ফোল্ডার ব্যবহার করা হয়। প্রতিটি ফাইল যা pages/api/ ফোল্ডারে থাকে, সেটি একটি API রাউট হিসেবে কাজ করে।
API Route তৈরি করার উদাহরণ:
pages/api/hello.js:
export default function handler(req, res) {
res.status(200).json({ message: 'Hello, World!' });
}
এটি একটি সিম্পল API রাউট, যা HTTP GET রিকোয়েস্টে {"message": "Hello, World!"} রেসপন্স প্রদান করবে।
req: রিকোয়েস্ট অবজেক্ট, যা ক্লায়েন্ট থেকে আসা তথ্য ধারণ করে।res: রেসপন্স অবজেক্ট, যা সার্ভার থেকে ক্লায়েন্টে রেসপন্স পাঠায়।
এখন আপনি http://localhost:3000/api/hello এই URL তে গিয়ে এই API রেসপন্স দেখতে পারবেন।
২. HTTP Request এবং Response হ্যান্ডলিং
Next.js API Routes এর মধ্যে আপনি বিভিন্ন HTTP মেথড যেমন GET, POST, PUT, DELETE ইত্যাদি হ্যান্ডল করতে পারবেন। এগুলির মাধ্যমে আপনি রিকোয়েস্ট ডেটা প্রসেস করতে এবং ক্লায়েন্টে রেসপন্স পাঠাতে পারবেন।
GET রিকোয়েস্ট হ্যান্ডলিং:
GET রিকোয়েস্ট ক্লায়েন্ট থেকে তথ্য পাওয়ার জন্য ব্যবহৃত হয়। এটি সাধারণত ডেটা রিট্রিভ করার জন্য ব্যবহৃত হয়।
// pages/api/user.js
export default function handler(req, res) {
if (req.method === 'GET') {
// কিছু ডেটা ফেরত পাঠানো
res.status(200).json({ name: 'John Doe', age: 25 });
} else {
// যদি GET রিকোয়েস্ট না হয়, তবে 405 (Method Not Allowed) রেসপন্স দিন
res.status(405).json({ message: 'Method Not Allowed' });
}
}
POST রিকোয়েস্ট হ্যান্ডলিং:
POST রিকোয়েস্ট সাধারণত ক্লায়েন্ট থেকে তথ্য পাঠানোর জন্য ব্যবহৃত হয় (যেমন ফর্ম সাবমিশন বা ডেটা আপলোড)।
// pages/api/contact.js
export default function handler(req, res) {
if (req.method === 'POST') {
const { name, message } = req.body;
// এখানে আপনি ডেটা প্রসেস বা ডাটাবেসে ইনসার্ট করতে পারেন
console.log(`Name: ${name}, Message: ${message}`);
res.status(200).json({ status: 'Success', message: 'Data received successfully' });
} else {
res.status(405).json({ message: 'Method Not Allowed' });
}
}
এখানে req.body ব্যবহার করা হয়েছে, যা POST রিকোয়েস্টের বডি থেকে ডেটা পাওয়ার জন্য ব্যবহৃত হয়। ডেটা JSON ফরম্যাটে আসবে, এবং আমরা সেটি প্রসেস করে রেসপন্স পাঠাচ্ছি।
PUT রিকোয়েস্ট হ্যান্ডলিং:
PUT রিকোয়েস্ট সাধারণত ক্লায়েন্ট থেকে ডেটা আপডেট করার জন্য ব্যবহৃত হয়।
// pages/api/user/[id].js
export default function handler(req, res) {
const { id } = req.query;
if (req.method === 'PUT') {
const { name, age } = req.body;
// এখানে ডেটা আপডেট করা হবে (যেমন ডাটাবেসে)
res.status(200).json({ message: `User ${id} updated`, name, age });
} else {
res.status(405).json({ message: 'Method Not Allowed' });
}
}
এখানে, req.query দিয়ে ডাইনামিক প্যারামিটার (যেমন ইউজার আইডি) নেয়া হচ্ছে এবং req.body দিয়ে PUT রিকোয়েস্টের ডেটা গ্রহণ করা হচ্ছে।
DELETE রিকোয়েস্ট হ্যান্ডলিং:
DELETE রিকোয়েস্ট সাধারণত ক্লায়েন্ট থেকে কোনো রিসোর্স মুছে ফেলার জন্য ব্যবহৃত হয়।
// pages/api/user/[id].js
export default function handler(req, res) {
const { id } = req.query;
if (req.method === 'DELETE') {
// এখানে ডেটা মুছে ফেলা হবে
res.status(200).json({ message: `User ${id} deleted` });
} else {
res.status(405).json({ message: 'Method Not Allowed' });
}
}
৩. Request থেকে ডেটা গ্রহণ
Next.js এর API Routes এর মাধ্যমে আপনি req.query, req.body, এবং req.headers এর মাধ্যমে রিকোয়েস্টের ডেটা গ্রহণ করতে পারেন।
req.query: URL প্যারামিটার (Query Parameters) থেকে ডেটা নেয়।req.body: POST বা PUT রিকোয়েস্টের বডি থেকে ডেটা নেয়।req.headers: রিকোয়েস্টের হেডার থেকে ডেটা নেয়।
উদাহরণস্বরূপ, যদি আপনি একটি ডাইনামিক রাউট ব্যবহার করেন:
// pages/api/user/[id].js
export default function handler(req, res) {
const { id } = req.query; // URL প্যারামিটার থেকে 'id' নেয়
res.status(200).json({ userId: id });
}
এটি http://localhost:3000/api/user/123 এই রিকোয়েস্টে id: 123 রেসপন্স করবে।
৪. Response সেটিংস
Next.js API Routes এ রেসপন্স প্রেরণ করতে আপনি res.status() এবং res.json() ব্যবহার করতে পারেন।
res.status(code): HTTP স্ট্যাটাস কোড সেট করে (যেমন 200, 404, 500 ইত্যাদি)।res.json(data): রিকোয়েস্টের রেসপন্স JSON ফরম্যাটে পাঠায়।
উদাহরণ:
// pages/api/data.js
export default function handler(req, res) {
res.status(200).json({ success: true, message: 'Data fetched successfully' });
}
৫. Error Handling
Next.js API Routes এ Error Handling করা অত্যন্ত গুরুত্বপূর্ণ। আপনি try/catch ব্লক ব্যবহার করে সার্ভার সাইড এrror হ্যান্ডল করতে পারেন এবং প্রয়োজনীয় রেসপন্স ফেরত দিতে পারেন।
// pages/api/user.js
export default async function handler(req, res) {
try {
// কিছু সার্ভার সাইড লজিক
throw new Error('Something went wrong');
} catch (error) {
res.status(500).json({ error: error.message });
}
}
এভাবে, Next.js API Routes এর মাধ্যমে আপনি সহজেই HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডল করতে পারবেন।