Lesson 14 / 23

express.Router()

Split routes into modular, mountable files.

A mini-app for a resource

express.Router() creates a self-contained set of routes and middleware that behaves like its own mini Express app.

routes/users.js

Define routes relative to where the router will be mounted.

// routes/users.js
import { Router } from 'express';

const router = Router();

router.get('/', (req, res) => res.json([{ id: 1, name: 'Ada' }]));
router.get('/:id', (req, res) => res.json({ id: req.params.id }));

export default router;

Mounting it

app.use(prefix, router) prepends the prefix to every route defined in that router.

// server.js
import express from 'express';
import usersRouter from './routes/users.js';

const app = express();
app.use('/users', usersRouter);   // GET /users, GET /users/:id
app.listen(3000);

Keep the entry file thin

One router per resource — routes/users.js, routes/orders.js — keeps server.js focused on wiring things together, not route logic.