আমরা অনেকেই ফ্রিল্যান্সিং করি, কিন্তু ক্লায়েন্টের প্রয়োজন অনুযায়ী কাস্টম API বানানো অনেক সময় জটিল মনে হয়। বিশেষ করে বাংলাদেশের ফ্রিল্যান্সারদের জন্য, যারা আন্তর্জাতিক ক্লায়েন্টদের সাথে কাজ করেন, একটি ভালো REST API তৈরি করা অত্যন্ত গুরুত্বপূর্ণ। এই Node.js REST API tutorial Bangladesh-এ আমি ধাপে ধাপে দেখাবো কিভাবে আপনি নিজের প্রজেক্টের জন্য একটি REST API তৈরি করতে পারেন।
প্রথমেই যা লাগবে
আমরা শুরু করার আগে নিচের টুলসগুলো আপনার কম্পিউটারে ইন্সটল করে নিন:
- Node.js (LTS ভার্সন) – আমাদের রিসোর্স পেজ থেকে ডাউনলোড লিংক পাবেন
- npm (Node Package Manager) – Node.js ইন্সটলের সাথে অটো আসে
- Postman বা curl – API টেস্ট করার জন্য
- একটি কোড এডিটর (VS Code প্রিফার করি)
একটি ফোল্ডার তৈরি করুন, নাম দিন rest-api-tutorial। তারপর টার্মিনাল খুলে নিচের কমান্ড দিন:
npm init -y
এতে package.json ফাইল তৈরি হবে। এবার Express ইন্সটল করুন:
npm install express
Express দিয়ে প্রথম সার্ভার
একটি app.js ফাইল বানিয়ে নিচের কোড লিখুন:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
টার্মিনালে node app.js রান করুন। ব্রাউজারে http://localhost:3000 খুললে 'Hello World!' দেখতে পাবেন।
REST API এর বেসিক স্ট্রাকচার
একটি REST API সাধারণত CRUD (Create, Read, Update, Delete) অপারেশন সাপোর্ট করে। আমরা একটি সাধারণ TODO অ্যাপের API বানাবো। প্রথমে একটি routes ফোল্ডার তৈরি করি এবং তার ভিতরে todos.js ফাইল বানাই।
প্রথমে কিছু ডামি ডাটা নেই:
let todos = [
{ id: 1, title: 'API তৈরি করা', completed: false },
{ id: 2, title: 'ডকুমেন্টেশন লেখা', completed: true }
];
GET রিকোয়েস্ট – সবগুলো TODO দেখানো
app.get('/api/todos', (req, res) => {
res.json(todos);
});
POST রিকোয়েস্ট – নতুন TODO যোগ করা
app.use(express.json()); // JSON পার্স করার জন্য
app.post('/api/todos', (req, res) => {
const newTodo = {
id: todos.length + 1,
title: req.body.title,
completed: false
};
todos.push(newTodo);
res.status(201).json(newTodo);
});
PUT রিকোয়েস্ট – একটি TODO আপডেট করা
app.put('/api/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const todo = todos.find(t => t.id === id);
if (!todo) {
return res.status(404).json({ message: 'TODO পাওয়া যায়নি' });
}
todo.title = req.body.title || todo.title;
todo.completed = req.body.completed !== undefined ? req.body.completed : todo.completed;
res.json(todo);
});
DELETE রিকোয়েস্ট – একটি TODO মুছে ফেলা
app.delete('/api/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = todos.findIndex(t => t.id === id);
if (index === -1) {
return res.status(404).json({ message: 'TODO পাওয়া যায়নি' });
}
todos.splice(index, 1);
res.status(204).send();
});
এখন পুরো app.js ফাইলটি দেখতে এরকম হবে (শুধু মূল অংশ):
const express = require('express');
const app = express();
const port = 3000;
app.use(express.json());
let todos = [
{ id: 1, title: 'API তৈরি করা', completed: false },
{ id: 2, title: 'ডকুমেন্টেশন লেখা', completed: true }
];
app.get('/api/todos', (req, res) => res.json(todos));
app.post('/api/todos', (req, res) => {
const newTodo = { id: todos.length + 1, title: req.body.title, completed: false };
todos.push(newTodo);
res.status(201).json(newTodo);
});
app.put('/api/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const todo = todos.find(t => t.id === id);
if (!todo) return res.status(404).json({ message: 'TODO পাওয়া যায়নি' });
todo.title = req.body.title || todo.title;
todo.completed = req.body.completed !== undefined ? req.body.completed : todo.completed;
res.json(todo);
});
app.delete('/api/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = todos.findIndex(t => t.id === id);
if (index === -1) return res.status(404).json({ message: 'TODO পাওয়া যায়নি' });
todos.splice(index, 1);
res.status(204).send();
});
app.listen(port, () => console.log(`Server running at http://localhost:${port}`));
ডাটাবেজ কানেক্ট করা (MongoDB)
উপরের উদাহরণে আমরা মেমোরিতে ডাটা রাখছি, যা প্রোডাকশনের জন্য ঠিক না। চলুন MongoDB ব্যবহার করে ডাটা পার্সিস্টেন্ট করি।
প্রথমে Mongoose ইন্সটল করুন:
npm install mongoose
তারপর একটি models/Todo.js ফাইল বানান:
const mongoose = require('mongoose');
const todoSchema = new mongoose.Schema({
title: { type: String, required: true },
completed: { type: Boolean, default: false }
});
module.exports = mongoose.model('Todo', todoSchema);
এখন app.js-এ MongoDB কানেক্ট করুন এবং মডেল ব্যবহার করুন:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/todoapp', { useNewUrlParser: true, useUnifiedTopology: true });
const Todo = require('./models/Todo');
app.get('/api/todos', async (req, res) => {
const todos = await Todo.find();
res.json(todos);
});
app.post('/api/todos', async (req, res) => {
const todo = new Todo({ title: req.body.title });
await todo.save();
res.status(201).json(todo);
});
app.put('/api/todos/:id', async (req, res) => {
const todo = await Todo.findByIdAndUpdate(req.params.id, req.body, { new: true });
if (!todo) return res.status(404).json({ message: 'TODO পাওয়া যায়নি' });
res.json(todo);
});
app.delete('/api/todos/:id', async (req, res) => {
const todo = await Todo.findByIdAndDelete(req.params.id);
if (!todo) return res.status(404).json({ message: 'TODO পাওয়া যায়নি' });
res.status(204).send();
});
এরর হ্যান্ডলিং ও মিডলওয়্যার
প্রোডাকশনে এরর হ্যান্ডলিং জরুরি। একটি মিডলওয়্যার ফাংশন বানান:
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ message: 'সার্ভার এরর!' });
});
এছাড়া cors মিডলওয়্যার ব্যবহার করুন যাতে ফ্রন্টএন্ড থেকে কল করা যায়:
npm install cors
const cors = require('cors');
app.use(cors());
ফ্রিল্যান্স প্রজেক্টে API ব্যবহারের টিপস
- ভার্সনিং: API এর URL এ
/api/v1/ব্যবহার করুন, যাতে ভবিষ্যতে পরিবর্তন সহজ হয়। - ডকুমেন্টেশন: Postman বা Swagger দিয়ে API ডকুমেন্টেশন তৈরি করুন। ক্লায়েন্টদের জন্য এটি খুবই helpful।
- এনভায়রনমেন্ট ভেরিয়েবল: পাসওয়ার্ড ও API কী
.envফাইলে রাখুন।dotenvপ্যাকেজ ব্যবহার করুন। - ডিপ্লয়: Heroku, Vercel, বা DigitalOcean এ ডিপ্লয় করুন। বাংলাদেশের ফ্রিল্যান্সারদের জন্য আমাদের কোর্স গুলোতে ডিপ্লয়মেন্ট শেখানো হয়েছে।
সাধারণ প্রশ্নোত্তর
প্রশ্ন ১: Node.js REST API শিখতে কতদিন লাগে?
বেসিক জানতে ১-২ সপ্তাহ, তবে ভালোভাবে আয়ত্ত করতে ১-২ মাস লাগতে পারে। প্রতিদিন চর্চা করুন।
প্রশ্ন ২: ফ্রিল্যান্স প্রজেক্টে কি নিজের API বানানো উচিত?
হ্যাঁ, যদি ক্লায়েন্টের বিশেষ চাহিদা থাকে। তবে ছোট প্রজেক্টে Firebase বা Supabase এর মতো BaaS ব্যবহার করতে পারেন।
প্রশ্ন ৩: MongoDB না MySQL কোনটা ভালো?
REST API এর জন্য MongoDB বেশি জনপ্রিয় কারণ JSON ডকুমেন্ট স্টোর করে। তবে রিলেশনাল ডাটা লাগলে MySQL ব্যবহার করুন।
প্রশ্ন ৪: API সিকিউরিটি কিভাবে নিশ্চিত করব?
JWT (JSON Web Token) ব্যবহার করে authentication করুন। HTTPS ব্যবহার করুন এবং ইনপুট ভ্যালিডেশন করুন।
প্রশ্ন ৫: বাংলাদেশের ফ্রিল্যান্সারদের জন্য API ডেভেলপমেন্টের চাহিদা কেমন?
চাহিদা অনেক বেশি। আন্তর্জাতিক বাজারেও Node.js ডেভেলপারদের ভালো দাম পাওয়া যায়। আমাদের কমিউনিটি তে যোগ দিয়ে আরও জানুন।
আশা করি এই Node.js REST API tutorial Bangladesh টি আপনার কাজে লাগবে। নিজে হাতে কলমে প্র্যাকটিস করুন, আর কোনো প্রশ্ন থাকলে কমেন্টে জানান।


