API Versioning Explained
API Versioning in Express.js
API Versioning হলো একটি production-ready Express.js API তৈরির গুরুত্বপূর্ণ অংশ। এর মাধ্যমে পুরোনো client না ভেঙে নতুন feature বা breaking change যুক্ত করা যায়।
📌 API Versioning কী?
API Versioning হলো একই API-এর একাধিক সংস্করণ (v1, v2, v3 ইত্যাদি) একসাথে পরিচালনা করার কৌশল। এতে করে নতুন API পরিবর্তন হলেও পুরোনো application স্বাভাবিকভাবে কাজ করতে পারে।
🤔 কেন API Versioning দরকার?
- পুরোনো client বা mobile app ভেঙে যাওয়া থেকে রক্ষা করে
- Breaking change নিরাপদভাবে introduce করা যায়
- একাধিক client-কে আলাদা version serve করা যায়
- Production API maintain করা সহজ হয়
🔧 API Versioning করার জনপ্রিয় পদ্ধতি
1️⃣ URL Versioning (সবচেয়ে জনপ্রিয়)
URL-এর মধ্যেই version উল্লেখ করা হয়।
/api/v1/users
/api/v2/users
2️⃣ Query Parameter Versioning
Query string এর মাধ্যমে version পাঠানো হয়।
/api/users?version=1
/api/users?version=2
3️⃣ Header Versioning
HTTP Header ব্যবহার করে version নির্ধারণ করা হয়।
Accept: application/vnd.myapi.v1+json
4️⃣ Media Type Versioning
Content-Type বা Accept header-এর মাধ্যমে version নির্ধারণ।
Content-Type: application/vnd.api.v2+json
🚀 Express.js-এ URL Versioning (Best Practice)
const express = require('express');
const app = express();
// Version 1
app.get('/api/v1/users', (req, res) => {
res.json({
version: 'v1',
users: ['Rahim', 'Karim']
});
});
// Version 2
app.get('/api/v2/users', (req, res) => {
res.json({
version: 'v2',
users: [
{ name: 'Rahim', age: 25 },
{ name: 'Karim', age: 30 }
]
});
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
📂 Recommended Folder Structure
src/
├── routes/
│ ├── v1/
│ │ └── user.routes.js
│ └── v2/
│ └── user.routes.js
├── app.js
└── server.js
✅ Best Practices
- সবসময় v1 দিয়ে শুরু করুন
- Breaking change হলে নতুন version তৈরি করুন
- পুরোনো version deprecate করার আগে notice দিন
- Folder-based versioning maintain করা সহজ
👼 Quiz
/