Bird
Raised Fist0
Expressframework~5 mins

Route prefixing in Express

Choose your learning style10 modes available
Introduction
Route prefixing helps organize your web app by grouping similar routes under a shared starting path. It keeps your code tidy and easier to manage.
When you want to group all user-related routes under '/users' like '/users/login' and '/users/register'.
When building an API and you want all version 1 routes to start with '/api/v1'.
When you have admin routes and want them all to start with '/admin' for clarity and security.
When splitting routes into separate files but want them to share a common path prefix.
When you want to apply middleware only to a group of routes sharing the same prefix.
Syntax
Express
const express = require('express');
const app = express();
const router = express.Router();

// Define routes on router
router.get('/path', (req, res) => {
  res.send('response');
});

// Use router with prefix
app.use('/prefix', router);
You create a router to hold routes, then attach it to the main app with a prefix.
All routes inside the router will automatically start with the prefix you set.
Examples
All routes in userRouter start with '/users'. So '/users/login' shows 'User login page'.
Express
const express = require('express');
const app = express();
const userRouter = express.Router();

userRouter.get('/login', (req, res) => {
  res.send('User login page');
});

app.use('/users', userRouter);
This prefixes all apiRouter routes with '/api/v1'. So '/api/v1/data' returns JSON data.
Express
const express = require('express');
const app = express();
const apiRouter = express.Router();

apiRouter.get('/data', (req, res) => {
  res.json({ message: 'API data' });
});

app.use('/api/v1', apiRouter);
Sample Program
This program creates a router with one route '/hello'. The router is used with prefix '/greet'. So visiting '/greet/hello' shows 'Hello from router!'.
Express
const express = require('express');
const app = express();
const router = express.Router();

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

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

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});
OutputSuccess
Important Notes
Route prefixing helps keep your app organized and makes it easier to add or change groups of routes.
You can use multiple routers with different prefixes in the same app.
Middleware can be applied to routers to affect all prefixed routes at once.
Summary
Route prefixing groups routes under a shared path to organize your app.
Create a router, define routes on it, then attach it to the app with a prefix.
This makes your URLs cleaner and your code easier to maintain.

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