BanglaPublished Oct 3, 2025Updated Oct 11, 20251 min read
Express Router এর Order
Tips
- ✅ Auth middleware এর মতো global middleware ব্যবহার করলে সবার উপরে রাখা।
- ✅ routes conflict এড়ানোর জন্য অবশ্যই routes order maintain করতে হবে। যেমন specific/static route গুলোকে অবশ্যই dynamic route গুলোর আগে রাখতে হবে। যেমনঃ আমি যদি '/users/:userId' router কে '/users/list' এর আগে ব্যবহার করি তাহলে '/users/list' api তে request করলেও request '/users/:userId' তে হিট হবে। '/users/list' এর 'list' তখন '/users/:userId' এর params হিসেবে ব্যবহার হবে যা internal server error দিবে কারণ এখানে 'userId' হলো কোনো uuid.
- ✅ Route shadowing এড়ানোর জন্য static routes এর পরে router mounting করতে হবে।
- ✅ Error handling middleware গুলো routing order এর শেষে থাকবে।
js
const router = require('express').Router();
// 1. Global middleware
router.use(authMiddleware);
// 2. Specific/static routes
router.get('/users/list', usersController.list);
router.get('/users/report', usersController.report);
// 3. Dynamic routes
router.get('/users/:userId', usersController.details);
router.put('/users/:userId', usersController.update);
// 4. Mount child routers after specific routes
router.use('/users', userChildRouter);
// 5. Error handler (at the end)
router.use((err, req, res, next) => {
res.status(500).json({ error: err.message });
});
module.exports = router;
route order ঠিকভাবে maintain না করার কারণে এক api এর হিট অন্য api তে গিয়ে পরতে পারে। এসব কারণে internal server error, payload mismatch সহ বিভিন্ন bug দেখা যায়।