Bird
Raised Fist0
Expressframework~20 mins

Route prefixing in Express - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Route Prefixing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output when accessing prefixed routes?
Consider this Express app code with route prefixing. What response will the client receive when requesting /api/users?
Express
const express = require('express');
const app = express();
const router = express.Router();

router.get('/users', (req, res) => {
  res.send('User list');
});

app.use('/api', router);

app.listen(3000);
AThe client receives an empty response with status 200.
BThe client receives a 404 Not Found error.
CThe client receives 'Cannot GET /users' error.
DThe client receives 'User list' as the response.
Attempts:
2 left
💡 Hint
Remember the router is mounted on '/api', so routes inside it are prefixed.
📝 Syntax
intermediate
2:00remaining
Which option correctly prefixes routes using Express Router?
You want to prefix all routes in a router with '/admin'. Which code snippet correctly achieves this?
Arouter.prefix('/admin'); app.use(router);
Brouter.use('/admin'); app.use(router);
Capp.use('/admin', router);
Dapp.use(router, '/admin');
Attempts:
2 left
💡 Hint
Check how Express mounts routers with prefixes.
🔧 Debug
advanced
2:00remaining
Why does this prefixed route not respond as expected?
Given this code, why does a GET request to '/api/products' return 404?
const express = require('express');
const app = express();
const router = express.Router();

router.get('products', (req, res) => {
  res.send('Product list');
});

app.use('/api', router);

app.listen(3000);
AThe route path is missing a leading slash; it should be '/products'.
BThe router is not mounted correctly on the app.
CThe app.listen call is missing a callback function.
DThe router.get method is used incorrectly; it should be router.post.
Attempts:
2 left
💡 Hint
Check the route path string syntax inside router.get.
❓ state_output
advanced
2:00remaining
What is the output after multiple prefixed routers?
Consider this Express app code:
const express = require('express');
const app = express();
const router1 = express.Router();
const router2 = express.Router();

router2.get('/info', (req, res) => {
  res.send('Info page');
});

router1.use('/details', router2);
app.use('/api', router1);

app.listen(3000);
What response will a GET request to /api/details/info return?
AThe client receives a 404 Not Found error.
BThe client receives 'Info page' as the response.
CThe client receives 'Cannot GET /api/details/info' error.
DThe client receives an empty response with status 200.
Attempts:
2 left
💡 Hint
Routers can be nested and prefixes combine.
🧠 Conceptual
expert
2:00remaining
What is the effect of mounting the same router with different prefixes?
If you mount the same Express router instance twice with different prefixes like this:
const router = express.Router();
router.get('/status', (req, res) => res.send('OK'));

app.use('/service1', router);
app.use('/service2', router);
What happens when a client requests /service2/status?
AThe client receives 'OK' because the router handles requests under both prefixes.
BThe server throws an error at startup due to duplicate router mounting.
CThe client receives a 404 Not Found error because a router cannot be mounted twice.
DThe client receives 'OK' only if the request is to '/service1/status'.
Attempts:
2 left
💡 Hint
Think about how Express routers work when mounted multiple times.

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