# express.Router() — Express.js

Source: https://www.geekswithgeeks.com/en/expressjs/ex-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.

```javascript
// 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.

```javascript
// 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.
