Node.js
Route groups
Learn to create route groups with Router.
Route groups
A route group groups routes that share a common prefix under one router. Example: user routes under /users: GET /users (list), GET /users/:id (one user), POST /users (new).
You do this with express.Router(): const userRouter = express.Router(); userRouter.get("/", listHandler); userRouter.get("/:id", detailHandler); app.use("/users", userRouter);. Paths inside the router are written without the prefix: "/" and "/:id". Express adds the /users prefix automatically. This pattern keeps all routes of a resource in one place. Code duplication drops, maintenance gets easier; each resource has its own router file.
Route parameters inside a router
You can add routes with parameters to a router. Example: userRouter.get("/:id", (req, res) => { res.send("User: " + req.params.id); });. When this router is mounted under /users, it handles a /users/5 request and req.params.id is "5".
Parameters inside a router are independent of the prefix the router is mounted under. The /:id route works the same whether the router is under /users or /admin/users. This makes the router reusable. You can also add router-specific middleware: userRouter.use(authMiddleware) runs only on user routes. This is useful for resource-based access control.
Exercise Write a user route group
Define const userRouter = express.Router(). Add userRouter.get("/", (req, res) => res.send("User list")). Add userRouter.get("/:id", (req, res) => res.send("User: " + req.params.id)). Mount with app.use("/users", userRouter). The server requests /users/5.
Show example solution
const express = require("express");
const app = express();
const userRouter = express.Router();
userRouter.get("/", (req, res) => res.send("User list"));
userRouter.get("/:id", (req, res) => res.send("User: " + req.params.id));
app.use("/users", userRouter);
const server = app.listen(3000, () => {
const http = require("http");
http.get("http://localhost:3000/users/5", (res) => {
let body = "";
res.on("data", (c) => body += c);
res.on("end", () => { console.log("Reply: " + body); server.close(); });
});
});
Test yourself
-
What is a route group for?
app.use("/users", userRouter)
- Defines a single route
- Catches errors
- Groups routes with a common prefix
- Parses JSON
Show answer
Groups routes with a common prefix — A route group gathers routes with a common prefix in one router.
-
Match each piece to its role
- userRouter.get('/')
- List route
- userRouter.get('/:id')
- Single record route
- app.use('/users', ...)
- Mounts the router
- req.params.id
- User identifier
-
Complete the router :id route
userRouter.get("/:id", (req, res) => {
res.send("Kullanıcı: " + req.____.id);
});
Show answer
userRouter.get("/:id", (req, res) => {
res.send("Kullanıcı: " + req.params.id);
});
Next lesson: Method chaining