ExpressJS ব্যবহার করে API তৈরি করার সময়, Routes এবং Controllers তৈরি করা গুরুত্বপূর্ণ। Routes রিকোয়েস্টগুলো নির্দিষ্ট অ্যাকশন বা ফাংশনের সাথে সম্পর্কিত করে এবং Controllers রিকোয়েস্টগুলোর প্রক্রিয়া (যেমন: ডাটাবেস থেকে তথ্য আনানো বা ফর্ম ডাটা প্রক্রিয়া করা) সম্পাদন করে। এই পদ্ধতিতে অ্যাপ্লিকেশনটি আরও পরিষ্কার এবং মডুলার হয়, কারণ আপনি রাউট এবং কন্ট্রোলারকে আলাদা আলাদা ফাইলে রাখতে পারেন।
১. ExpressJS API Routes
Routes হল অ্যাপ্লিকেশনের URL পাথের সাথে সম্পর্কিত কোড, যা নির্দিষ্ট HTTP মেথড (GET, POST, PUT, DELETE ইত্যাদি) এর জন্য কাজ করে। API রাউট তৈরি করতে, ExpressJS-এ app.get(), app.post(), app.put() এবং app.delete() মেথডগুলি ব্যবহার করা হয়।
১.১. Routes তৈরির প্রাথমিক উদাহরণ
const express = require('express');
const app = express();
// JSON ডাটা প্যার্সিং
app.use(express.json());
// GET রাউট (তথ্য প্রদর্শন)
app.get('/api/users', (req, res) => {
res.status(200).send('Fetching all users');
});
// POST রাউট (তথ্য যোগ করা)
app.post('/api/users', (req, res) => {
const user = req.body;
res.status(201).send(`User added: ${JSON.stringify(user)}`);
});
app.listen(3000, () => {
console.log('Server running at http://localhost:3000');
});
এখানে:
- GET /api/users: সমস্ত ইউজার তথ্য ফিরে পাওয়া যাবে।
- POST /api/users: নতুন ইউজার যোগ করার জন্য API রাউট।
এছাড়া, বিভিন্ন HTTP মেথডের জন্য আলাদা রাউট তৈরি করা যায়, যেমন PUT বা DELETE রাউট।
২. Controllers তৈরি করা
Controllers হল সেই অংশ যা রাউটগুলোর সাথে যুক্ত ফাংশনগুলিকে প্রক্রিয়া করে। উদাহরণস্বরূপ, একটি GET রাউট ব্যবহার করে ডাটাবেস থেকে ইউজার তথ্য প্রাপ্তি বা POST রাউটের মাধ্যমে নতুন ইউজার ইনসার্ট করার মতো কাজগুলি কন্ট্রোলার দ্বারা করা হয়। কন্ট্রোলারের মাধ্যমে কোডের পুনরায় ব্যবহারযোগ্যতা এবং অ্যাপ্লিকেশনের মডুলারিটি উন্নত হয়।
২.১. Controller Example
আমরা এখানে Users API তৈরি করবো যেখানে একটি usersController.js কন্ট্রোলার ফাইল থাকবে যা ইউজারদের তথ্য প্রসেস করবে।
controllers/usersController.js:
// কন্ট্রোলার ফাইল
const getAllUsers = (req, res) => {
res.status(200).json({ message: 'Fetching all users' });
};
const createUser = (req, res) => {
const user = req.body;
res.status(201).json({ message: 'User created', user });
};
module.exports = { getAllUsers, createUser };
এখানে, আমরা দুটি ফাংশন তৈরি করেছি:
getAllUsers: সমস্ত ইউজারের তথ্য প্রাপ্তি।createUser: নতুন ইউজার তৈরি করা।
২.২. Routes এবং Controllers একত্রে ব্যবহার করা
এখন, রাউটগুলো কন্ট্রোলার ফাংশনের সাথে সংযুক্ত করা হবে। routes/users.js ফাইলে রাউটগুলো এবং কন্ট্রোলার ফাংশনগুলো সংযুক্ত করা হবে।
routes/users.js:
const express = require('express');
const router = express.Router();
const usersController = require('../controllers/usersController');
// GET রাউট (সব ইউজার পাওয়া)
router.get('/', usersController.getAllUsers);
// POST রাউট (নতুন ইউজার তৈরি)
router.post('/', usersController.createUser);
module.exports = router;
এখানে, users.js রাউটার ফাইলে রাউটগুলো কন্ট্রোলার ফাংশনের সাথে যুক্ত করা হয়েছে।
২.৩. Main App এ Routes ব্যবহার করা
এখন, মূল অ্যাপ ফাইলে (যেমন: app.js) এই রাউটগুলো ইমপোর্ট করে ব্যবহার করতে হবে।
app.js:
const express = require('express');
const app = express();
const usersRoutes = require('./routes/users');
// JSON প্যার্সিং মিডলওয়্যার
app.use(express.json());
// রাউট সংযোগ
app.use('/api/users', usersRoutes);
app.listen(3000, () => {
console.log('Server running at http://localhost:3000');
});
এখানে:
/api/usersরাউটটিusersRoutesফাইল থেকে এসেছে, যেখানে কন্ট্রোলার ফাংশনগুলো যুক্ত করা হয়েছিল।- Express.json() মিডলওয়্যার ব্যবহার করে আমরা JSON ডাটা প্যার্স করছি।
৩. RESTful API Design
RESTful API ডিজাইনে কিছু কনভেনশন থাকে, যা আমরা ব্যবহার করতে পারি:
৩.১. রাউট স্ট্রাকচার
- GET /api/users: সমস্ত ইউজার দেখানো হবে।
- GET /api/users/:id: নির্দিষ্ট ইউজার দেখানো হবে (id দ্বারা শনাক্ত করা হবে)।
- POST /api/users: নতুন ইউজার তৈরি করা হবে।
- PUT /api/users/:id: নির্দিষ্ট ইউজারের তথ্য আপডেট করা হবে।
- DELETE /api/users/:id: নির্দিষ্ট ইউজার মুছে ফেলা হবে।
৩.২. Controller Update
যেহেতু RESTful ডিজাইন অনুসারে আমাদের ইউজার আপডেট এবং ডিলিট রাউট তৈরি করতে হবে, সেজন্য কন্ট্রোলারেও নতুন ফাংশন যুক্ত করতে হবে।
controllers/usersController.js:
const getAllUsers = (req, res) => {
res.status(200).json({ message: 'Fetching all users' });
};
const createUser = (req, res) => {
const user = req.body;
res.status(201).json({ message: 'User created', user });
};
const getUserById = (req, res) => {
const userId = req.params.id;
res.status(200).json({ message: `Fetching user with ID: ${userId}` });
};
const updateUser = (req, res) => {
const userId = req.params.id;
const updatedData = req.body;
res.status(200).json({ message: `User with ID: ${userId} updated`, updatedData });
};
const deleteUser = (req, res) => {
const userId = req.params.id;
res.status(200).json({ message: `User with ID: ${userId} deleted` });
};
module.exports = { getAllUsers, createUser, getUserById, updateUser, deleteUser };
এখানে:
getUserById: নির্দিষ্ট ইউজার ID দিয়ে ইউজার পাওয়া।updateUser: নির্দিষ্ট ইউজারের তথ্য আপডেট করা।deleteUser: নির্দিষ্ট ইউজার মুছে ফেলা।
৩.৩. Routes Update
এখন এই কন্ট্রোলার ফাংশনগুলো রাউটগুলোতে যোগ করতে হবে।
routes/users.js:
const express = require('express');
const router = express.Router();
const usersController = require('../controllers/usersController');
// GET রাউট (সব ইউজার পাওয়া)
router.get('/', usersController.getAllUsers);
// GET রাউট (নির্দিষ্ট ইউজার পাওয়া)
router.get('/:id', usersController.getUserById);
// POST রাউট (নতুন ইউজার তৈরি)
router.post('/', usersController.createUser);
// PUT রাউট (ইউজার আপডেট)
router.put('/:id', usersController.updateUser);
// DELETE রাউট (ইউজার ডিলিট)
router.delete('/:id', usersController.deleteUser);
module.exports = router;
এখানে:
/api/users/:idরাউট ব্যবহার করা হচ্ছে নির্দিষ্ট ইউজার পেতে, আপডেট করতে বা মুছে ফেলতে।
সারাংশ
ExpressJS এর মাধ্যমে API Routes এবং Controllers তৈরি করা একটি ক্লিন এবং মডুলার অ্যাপ্লিকেশন স্ট্রাকচার তৈরি করতে সাহায্য করে। Routes ব্যবহার করে নির্দিষ্ট URL এবং HTTP মেথডের সাথে কাজ করা হয়, আর Controllers ফাংশনগুলি এই রিকোয়েস্টগুলোর মধ্যে কার্যকরী প্রক্রিয়া সম্পাদন করে। RESTful API ডিজাইন অনুসরণ করে, ExpressJS অ্যাপ্লিকেশনটি সোজা, পরিষ্কার এবং মেইনটেনেবল থাকে।
Read more