Skip to content
UniCircle
MediumConceptualExpress

Routing, route parameters and express.Router

Question NODE-EXP-003

How does routing work in Express? Explain route parameters and query strings, the difference between app.get() and router.get(), and how to nest routers.

Show the explanation

Model answer. A route pairs an HTTP method and a path pattern with handler functions.

JavaScript
// routes/courses.js
import { Router } from 'express';
const router = Router();
router.get('/', listCourses);                       // GET /courses?level=ug
router.get('/:code', getCourse);                    // GET /courses/btech
router.post('/', requireAdmin, createCourse);
export default router;

// routes/reviews.js, nested under a course
const reviews = Router({ mergeParams: true });      // can read :code from the parent
reviews.get('/', (req, res) => res.json(findReviews(req.params.code)));

// app.js
app.use('/courses', coursesRouter);
coursesRouter.use('/:code/reviews', reviews);        // GET /courses/btech/reviews
  • Route parameters are named path segments: req.params.code.
  • Query strings are optional filters after ?: req.query.level.
  • `app.get()` registers a route directly on the application. `router.get()` registers it on a mini-app (express.Router()) that you mount at a prefix with app.use(). Routers keep each feature in its own file, and let you attach middleware to a group of routes.
  • Nesting is mounting one router inside another; use mergeParams: true to read the parent's parameters.

Original UniCircle question. Last reviewed 22 Oct 2026.