Bird
Raised Fist0
Expressframework~10 mins

Virtual path prefixes in Express - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to mount a router on the '/api' virtual path prefix.

Express
const express = require('express');
const app = express();
const router = express.Router();

app.use([1], router);
Drag options to blanks, or click blank then click option'
A'/api'
B'api'
C'/router'
D'/'
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'api' without the leading slash
Using '/' which mounts at root
2fill in blank
medium

Complete the code to define a GET route on the router for '/users'.

Express
const router = require('express').Router();

router.[1]('/users', (req, res) => {
  res.send('User list');
});
Drag options to blanks, or click blank then click option'
Adelete
Bpost
Cput
Dget
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'post' instead of 'get'
Using 'put' or 'delete' for fetching data
3fill in blank
hard

Fix the error in mounting the router so it uses the virtual path prefix '/api'.

Express
const app = require('express')();
const router = require('express').Router();

app.use([1], router);
Drag options to blanks, or click blank then click option'
A'/api'
Brouter
C'api'
Dundefined
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping the order of arguments
Using 'api' without slash
4fill in blank
hard

Fill both blanks to create a router mounted on '/admin' that responds to GET requests at '/dashboard'.

Express
const express = require('express');
const app = express();
const router = express.Router();

router.[1]('/dashboard', (req, res) => {
  res.send('Admin Dashboard');
});

app.use([2], router);
Drag options to blanks, or click blank then click option'
Aget
Bpost
C'/admin'
D'/dashboard'
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'post' instead of 'get'
Mounting on wrong path like '/dashboard'
5fill in blank
hard

Fill all three blanks to create a router mounted on '/shop' with a POST route at '/order' that sends 'Order received'.

Express
const express = require('express');
const app = express();
const router = express.Router();

router.[1]([2], (req, res) => {
  res.send('Order received');
});

app.use([3], router);
Drag options to blanks, or click blank then click option'
Apost
B'/order'
C'/shop'
Dget
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'get' instead of 'post'
Wrong route or mount paths

Practice

(1/5)
1. What is the main purpose of using a virtual path prefix in Express with app.use('/prefix', router)?
easy
A. To handle errors globally in the app
B. To create a new Express app instance
C. To serve static files from a directory
D. To group routes under a common URL path for better organization

Solution

  1. Step 1: Understand what app.use('/prefix', router) does

    This syntax mounts a router or middleware under the URL path '/prefix'.
  2. Step 2: Identify the purpose of grouping routes

    Grouping routes under a common prefix helps organize and maintain the app's URL structure.
  3. Final Answer:

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

    Virtual path prefix = route grouping [OK]
Hint: Virtual path prefixes group routes under one URL path [OK]
Common Mistakes:
  • Thinking it creates a new app instance
  • Confusing with static file serving
  • Assuming it handles errors
2. Which of the following is the correct syntax to mount a router on the virtual path prefix '/api' in Express?
easy
A. app.route('/api', router);
B. app.use('/api', router);
C. app.mount('/api', router);
D. app.router('/api', router);

Solution

  1. Step 1: Recall Express method to mount middleware or routers

    Express uses app.use(path, middleware) to mount routers or middleware.
  2. Step 2: Check each option's method name

    Only app.use is the correct method; others like app.route, app.mount, and app.router are invalid or incorrect here.
  3. Final Answer:

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

    Mount router = app.use(path, router) [OK]
Hint: Use app.use to mount routers on paths [OK]
Common Mistakes:
  • Using app.route instead of app.use
  • Trying non-existent methods like app.mount
  • Confusing router mounting with route definitions
3. Given the code below, what URL path will respond with 'Hello from admin'?
const express = require('express');
const app = express();
const adminRouter = express.Router();
adminRouter.get('/', (req, res) => res.send('Hello from admin'));
app.use('/admin', adminRouter);
app.listen(3000);
medium
A. http://localhost:3000/
B. http://localhost:3000/admin
C. http://localhost:3000/admin/
D. http://localhost:3000/admin/home

Solution

  1. Step 1: Understand the router path and mounting prefix

    The router handles GET requests at '/' and is mounted at '/admin'.
  2. Step 2: Combine prefix and router path

    The full path is '/admin' + '/' = '/admin/'.
  3. Step 3: Understand URL normalization

    URLs with or without trailing slash for this route behave the same in Express, so both '/admin' and '/admin/' respond with 'Hello from admin'.
  4. Final Answer:

    http://localhost:3000/admin/ and http://localhost:3000/admin -> Option C
  5. Quick Check:

    Router '/' + mount '/admin' = '/admin/' and '/admin' [OK]
Hint: Combine mount path and router path for full URL; trailing slash optional [OK]
Common Mistakes:
  • Ignoring trailing slash in URL
  • Assuming root '/' responds without prefix
  • Confusing '/admin' and '/admin/home'
4. Identify the error in this Express code snippet that tries to mount a router with a virtual path prefix:
const express = require('express');
const app = express();
const userRouter = express.Router();
userRouter.get('/profile', (req, res) => res.send('User Profile'));
app.use(userRouter, '/user');
app.listen(3000);
medium
A. The order of arguments in app.use is incorrect
B. The router path '/profile' is invalid
C. Missing app.listen call
D. Router should be created with express() not express.Router()

Solution

  1. Step 1: Check the app.use argument order

    Correct syntax is app.use(path, router), but here it is reversed.
  2. Step 2: Identify the correct argument order

    It should be app.use('/user', userRouter) to mount the router at '/user'.
  3. Final Answer:

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

    app.use(path, router) order matters [OK]
Hint: app.use(path, router) not app.use(router, path) [OK]
Common Mistakes:
  • Swapping router and path arguments
  • Thinking router path is invalid
  • Forgetting to call app.listen
5. You want to create an Express app with two routers: adminRouter mounted at '/admin' and userRouter mounted at '/user'. Both routers have a route for '/' that sends different greetings. Which code correctly sets this up so visiting '/admin' and '/user' shows the correct messages?
hard
A. app.use('/admin', adminRouter); app.use('/user', userRouter);
B. app.use(adminRouter, '/admin'); app.use(userRouter, '/user');
C. app.route('/admin', adminRouter); app.route('/user', userRouter);
D. app.get('/admin', adminRouter); app.get('/user', userRouter);

Solution

  1. Step 1: Recall correct syntax for mounting routers with prefixes

    Use app.use(path, router) to mount routers at virtual path prefixes.
  2. Step 2: Evaluate the options

    The correct code uses app.use('/admin', adminRouter); and app.use('/user', userRouter);. Distractors use invalid methods like app.route() or app.get() with routers, or reverse the path and router order in app.use().
  3. Final Answer:

    app.use('/admin', adminRouter); app.use('/user', userRouter); -> Option A
  4. Quick Check:

    Mount routers with app.use(path, router) [OK]
Hint: Mount routers with app.use(path, router) for multiple prefixes [OK]
Common Mistakes:
  • Swapping router and path in app.use
  • Using app.route or app.get to mount routers
  • Not mounting routers at all
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