Bird
Raised Fist0
Expressframework~3 mins

Why Route prefixing in Express? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could change many routes' base path by editing just one line?

The Scenario

Imagine building a web app with many pages like /users, /users/profile, /users/settings, and you have to write each full path manually for every route.

The Problem

Manually typing full paths for every route is tiring, easy to make mistakes, and hard to update if the base path changes. It's like rewriting the same address over and over.

The Solution

Route prefixing lets you set a common starting path once, so all related routes automatically share it. This keeps your code clean and easy to maintain.

Before vs After
✗ Before
app.get('/users/profile', handler);
app.get('/users/settings', handler);
✓ After
const userRouter = express.Router();
userRouter.get('/profile', handler);
userRouter.get('/settings', handler);
app.use('/users', userRouter);
What It Enables

It enables organizing routes logically and updating base paths quickly without hunting through all your code.

Real Life Example

Think of a mailing address: instead of writing the city and street every time, you write it once and just add the house number for each letter.

Key Takeaways

Manually writing full route paths is repetitive and error-prone.

Route prefixing groups related routes under a shared base path.

This makes your code cleaner and easier to update.

Practice

(1/5)
1. What is the main purpose of route prefixing in Express?
easy
A. To encrypt route URLs for security
B. To speed up the server response time
C. To automatically generate HTML pages
D. To group routes under a shared path for better organization

Solution

  1. Step 1: Understand route prefixing concept

    Route prefixing means putting multiple routes under one common path prefix to keep code organized.
  2. Step 2: Identify the main benefit

    This grouping helps keep URLs clean and code easier to maintain by avoiding repetition of the same path.
  3. Final Answer:

    To group routes under a shared path for better organization -> Option D
  4. Quick Check:

    Route prefixing = Group routes under shared path [OK]
Hint: Route prefixing groups routes by shared path prefix [OK]
Common Mistakes:
  • Thinking it improves server speed
  • Confusing with automatic HTML generation
  • Assuming it encrypts URLs
2. Which of the following is the correct way to prefix routes using Express Router?
easy
A. app.use('/api', router);
B. router.prefix('/api');
C. app.route('/api').use(router);
D. router.attach('/api');

Solution

  1. Step 1: Recall Express Router usage

    Express uses app.use(prefix, router) to attach a router with a path prefix.
  2. Step 2: Check each option

    Only app.use('/api', router) is valid syntax; others are not Express methods.
  3. Final Answer:

    app.use('/api', router); -> Option A
  4. Quick Check:

    Prefix routes with app.use(prefix, router) [OK]
Hint: Use app.use('/prefix', router) to prefix routes [OK]
Common Mistakes:
  • Using non-existent router.prefix() method
  • Trying app.route() to prefix router
  • Using router.attach() which doesn't exist
3. Given this code, what URL path will respond with 'Hello World'?
const express = require('express');
const app = express();
const router = express.Router();

router.get('/hello', (req, res) => {
  res.send('Hello World');
});

app.use('/api', router);
medium
A. /hello
B. /api
C. /api/hello
D. /hello/api

Solution

  1. Step 1: Understand route prefixing effect

    The router defines '/hello', but it is attached to app with prefix '/api'.
  2. Step 2: Combine prefix and route path

    The full path becomes '/api' + '/hello' = '/api/hello'.
  3. Final Answer:

    /api/hello -> Option C
  4. Quick Check:

    Prefix + route path = full URL [OK]
Hint: Full route = prefix + router path [OK]
Common Mistakes:
  • Ignoring the prefix and choosing '/hello'
  • Choosing just the prefix '/api' without route
  • Reversing prefix and route order
4. Identify the error in this Express route prefixing code:
const express = require('express');
const app = express();
const router = express.Router();

router.get('/test', (req, res) => {
  res.send('Test route');
});

app.use(router, '/api');
medium
A. router.get path should not start with '/'
B. The order of arguments in app.use is incorrect
C. router must be created with express.Route() not express.Router()
D. res.send should be res.json for route prefixing

Solution

  1. Step 1: Check app.use argument order

    app.use expects (path, router), but code uses (router, path) which is wrong.
  2. Step 2: Confirm other parts are correct

    router.get with '/test' is valid; express.Router() is correct; res.send works fine.
  3. Final Answer:

    The order of arguments in app.use is incorrect -> Option B
  4. Quick Check:

    app.use(path, router) order matters [OK]
Hint: app.use(path, router) not app.use(router, path) [OK]
Common Mistakes:
  • Swapping arguments in app.use
  • Thinking router path can't start with '/'
  • Confusing express.Router() with express.Route()
5. You want to create two routers: one for '/users' and one for '/products'. How do you correctly prefix and mount them in Express?
hard
A. app.use('/users', usersRouter); app.use('/products', productsRouter);
B. usersRouter.use('/users'); productsRouter.use('/products'); app.use(usersRouter); app.use(productsRouter);
C. app.route('/users').use(usersRouter); app.route('/products').use(productsRouter);
D. app.use(usersRouter, '/users'); app.use(productsRouter, '/products');

Solution

  1. Step 1: Understand correct mounting syntax

    To prefix routers, use app.use(prefix, router) for each router separately.
  2. Step 2: Evaluate options

    app.use('/users', usersRouter); app.use('/products', productsRouter); correctly uses app.use with prefix and router. Others misuse methods or argument order.
  3. Final Answer:

    app.use('/users', usersRouter); app.use('/products', productsRouter); -> Option A
  4. Quick Check:

    Mount each router with app.use(prefix, router) [OK]
Hint: Mount each router with app.use('/prefix', router) [OK]
Common Mistakes:
  • Using router.use() without attaching to app
  • Using app.route() incorrectly for routers
  • Swapping arguments in app.use
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard