Node.js Lesson 8: Routing with Express Router

🟢 Node.js CourseLesson 8 of 15 · 53% complete

As apps grow, putting all routes in one file becomes chaos. Express Router lets you split routes into separate files by feature.

Without Router (bad — becomes messy)

// app.js — everything in one file
app.get("/api/users", ...);
app.post("/api/users", ...);
app.get("/api/users/:id", ...);
app.put("/api/users/:id", ...);
app.delete("/api/users/:id", ...);
app.get("/api/products", ...);
app.post("/api/products", ...);
// ... 50 more routes

With Express Router (clean)

// routes/users.js
const express = require("express");
const router = express.Router();

let users = [
  { id: 1, name: "Alice" },
  { id: 2, name: "Bob" }
];

router.get("/", (req, res) => {
  res.json(users);
});

router.get("/:id", (req, res) => {
  const user = users.find(u => u.id === Number(req.params.id));
  if (!user) return res.status(404).json({ error: "User not found" });
  res.json(user);
});

router.post("/", (req, res) => {
  const newUser = { id: Date.now(), ...req.body };
  users.push(newUser);
  res.status(201).json(newUser);
});

router.delete("/:id", (req, res) => {
  users = users.filter(u => u.id !== Number(req.params.id));
  res.json({ message: "Deleted" });
});

module.exports = router;

// app.js — clean!
const usersRouter = require("./routes/users");
app.use("/api/users", usersRouter);

🏋️ Practice Task

Structure your Express app into separate route files: routes/users.js and routes/products.js. Both should support GET all, GET one by id, POST create, DELETE by id. Use express.Router() for each. Import both in app.js.

💡 Hint: In app.js: const usersRouter = require(“./routes/users”); app.use(“/api/users”, usersRouter);

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *