Bird
Raised Fist0
Expressframework~30 mins

Route prefixing in Express - Mini Project: Build & Apply

Choose your learning style10 modes available
Route prefixing
📖 Scenario: You are building a simple Express server that handles user and product routes separately.To keep the code organized, you want to use route prefixing so that all user routes start with /users and all product routes start with /products.
🎯 Goal: Create an Express app with two routers: one for users and one for products. Use route prefixing to mount the routers so that user routes are under /users and product routes are under /products.
📋 What You'll Learn
Create an Express app instance called app
Create two routers called userRouter and productRouter
Add a GET route / to userRouter that sends 'User list'
Add a GET route / to productRouter that sends 'Product list'
Mount userRouter on the /users path using route prefixing
Mount productRouter on the /products path using route prefixing
💡 Why This Matters
🌍 Real World
Route prefixing helps organize server code by grouping related routes under a common path, making the code easier to maintain and scale.
💼 Career
Understanding route prefixing is essential for backend developers working with Express to build clean and modular APIs.
Progress0 / 4 steps
1
DATA SETUP: Create Express app and routers
Create an Express app instance called app and two routers called userRouter and productRouter using express.Router().
Express
Hint

Use const app = express() to create the app.

Use express.Router() to create routers.

2
CONFIGURATION: Add GET routes to routers
Add a GET route / to userRouter that sends 'User list' and a GET route / to productRouter that sends 'Product list'.
Express
Hint

Use router.get('/', (req, res) => { res.send('text') }) to add routes.

3
CORE LOGIC: Mount routers with route prefixing
Mount userRouter on the /users path and productRouter on the /products path using app.use().
Express
Hint

Use app.use('/prefix', router) to mount routers with prefixes.

4
COMPLETION: Start the Express server
Add code to start the Express server on port 3000 using app.listen().
Express
Hint

Use app.listen(3000) to start the server on port 3000.

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