Building Your First API with Node.js and ExpressLesson 2.3
Express Router — organizing routes into separate files
express.Router, router files, app.use with prefix, modular routing, separation of concerns, route mounting
Organizing Routes with Express Router
Putting all routes in index.js doesn't scale past 10 routes. Express Router lets you split routes into separate files and mount them under a prefix.
Creating a Router Module
// routes/users.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.json({ message: 'List all users' });
});
router.get('/:id', (req, res) => {
res.json({ message: `Get user ${req.params.id}` });
});
router.post('/', (req, res) => {
res.status(201).json({ message: 'Create user', data: req.body });
});
module.exports = router;Mounting Routers in app.js
// index.js
const express = require('express');
const app = express();
app.use(express.json());
const usersRouter = require('./routes/users');
const productsRouter = require('./routes/products');
app.use('/users', usersRouter);
app.use('/products', productsRouter);
app.listen(3000);The prefix in app.use('/users', usersRouter) is prepended to all routes defined in the router. So router.get('/') handles GET /users and router.get('/:id') handles GET /users/:id. This pattern keeps each file small, focused, and testable in isolation.
