Bird
Raised Fist0
Expressframework~10 mins

Namespaces for separation 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 create a new router instance in Express.

Express
const router = require('express').[1]();
Drag options to blanks, or click blank then click option'
Alisten
Broute
Capp
DRouter
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'route' instead of 'Router' causes an error.
Using 'app' is for the main app, not routers.
2fill in blank
medium

Complete the code to mount the router under the '/api' namespace.

Express
app.[1]('/api', router);
Drag options to blanks, or click blank then click option'
Ause
Bget
Cpost
Dlisten
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'get' or 'post' only handles those HTTP methods.
Using 'listen' is for starting the server.
3fill in blank
hard

Fix the error in the router code to define a GET route at '/' inside the router.

Express
router.[1]('/', (req, res) => { res.send('Hello from API'); });
Drag options to blanks, or click blank then click option'
Aget
Buse
Cpost
Dlisten
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'post' handles POST requests, not GET.
Using 'use' is for middleware, not specific HTTP methods.
4fill in blank
hard

Fill both blanks to create a router and export it for use in the main app.

Express
const [1] = require('express').Router();
module.exports = [2];
Drag options to blanks, or click blank then click option'
Arouter
Bapp
Cserver
Dexpress
Attempts:
3 left
💡 Hint
Common Mistakes
Exporting 'app' instead of 'router' causes errors.
Using 'express' as the export is incorrect.
5fill in blank
hard

Fill all three blanks to define a namespaced route that responds with JSON.

Express
const [1] = require('express').Router();

[1].[2]('/status', (req, res) => {
  res.[3]({ message: 'API is running' });
});
Drag options to blanks, or click blank then click option'
Arouter
Bget
Cjson
Dsend
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'send' instead of 'json' sends plain text.
Using 'post' instead of 'get' changes the HTTP method.

Practice

(1/5)
1. What is the main purpose of using namespaces in Express routing?
easy
A. To group related routes under a common path prefix
B. To improve database query speed
C. To style HTML elements
D. To manage user sessions

Solution

  1. Step 1: Understand what namespaces do in Express

    Namespaces help organize routes by grouping them under a shared path prefix.
  2. Step 2: Compare with other options

    Options B, C, and D relate to other concerns like database, styling, or sessions, not routing namespaces.
  3. Final Answer:

    To group related routes under a common path prefix -> Option A
  4. Quick Check:

    Namespaces = Group routes [OK]
Hint: Namespaces group routes by path prefix [OK]
Common Mistakes:
  • Confusing namespaces with database or styling concepts
  • Thinking namespaces manage sessions
  • Believing namespaces affect frontend styling
2. Which of the following is the correct way to attach a router to an Express app under the namespace '/api'?
easy
A. app.router('/api', router);
B. app.attach('/api', router);
C. app.route('/api', router);
D. app.use('/api', router);

Solution

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

    Express uses app.use(path, router) to mount routers under a path.
  2. Step 2: Check other options for validity

    Options A, B, and C are not valid Express methods for attaching routers.
  3. Final Answer:

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

    Attach router with app.use() [OK]
Hint: Use app.use('/path', router) to attach routers [OK]
Common Mistakes:
  • Using app.router instead of app.use
  • Confusing app.route with router attachment
  • Trying to use non-existent methods like app.attach
3. Given the code below, what will be the full URL path to access the route handler?
const express = require('express');
const app = express();
const userRouter = express.Router();

userRouter.get('/profile', (req, res) => res.send('User Profile'));
app.use('/user', userRouter);
medium
A. /user/profile
B. /profile
C. /user
D. /profile/user

Solution

  1. Step 1: Identify the namespace prefix

    The router is attached with app.use('/user', userRouter), so '/user' is the base path.
  2. Step 2: Combine router path with namespace

    The route inside the router is '/profile', so full path is '/user/profile'.
  3. Final Answer:

    /user/profile -> Option A
  4. Quick Check:

    Namespace + route = full path [OK]
Hint: Full path = namespace + router path [OK]
Common Mistakes:
  • Ignoring the namespace prefix
  • Using only the router path without prefix
  • Mixing order of path segments
4. Identify the error in the following Express code that tries to create a namespace:
const express = require('express');
const app = express();
const adminRouter = express.Router();

adminRouter.get('/dashboard', (req, res) => res.send('Admin Dashboard'));
app.use(adminRouter, '/admin');
medium
A. Missing app.listen call
B. adminRouter.get should be adminRouter.post
C. Router should be attached with app.use('/admin', adminRouter);
D. Cannot use express.Router() for namespaces

Solution

  1. Step 1: Check app.use syntax

    The correct syntax is app.use('/path', router), but here arguments are reversed.
  2. Step 2: Confirm other options

    adminRouter.get should be adminRouter.post is incorrect because GET is valid; C is unrelated to namespace error; D is false because express.Router() is used for namespaces.
  3. Final Answer:

    Router should be attached with app.use('/admin', adminRouter); -> Option C
  4. Quick Check:

    app.use(path, router) order matters [OK]
Hint: app.use(path, router) order is important [OK]
Common Mistakes:
  • Swapping arguments in app.use
  • Thinking HTTP method must be POST
  • Confusing missing listen with routing error
5. You want to create two separate namespaces in Express: '/api' for API routes and '/admin' for admin routes. Which code snippet correctly sets this up?
hard
A. const apiRouter = express.Router(); const adminRouter = express.Router(); app.route('/api', apiRouter); app.route('/admin', adminRouter);
B. const apiRouter = express.Router(); const adminRouter = express.Router(); app.use('/api', apiRouter); app.use('/admin', adminRouter);
C. const apiRouter = express.Router(); const adminRouter = express.Router(); app.use(apiRouter, '/api'); app.use(adminRouter, '/admin');
D. const apiRouter = express.Router(); const adminRouter = express.Router(); app.attach('/api', apiRouter); app.attach('/admin', adminRouter);

Solution

  1. Step 1: Create routers for each namespace

    Both apiRouter and adminRouter are created using express.Router().
  2. Step 2: Attach routers with correct syntax

    Use app.use('/path', router) to mount routers under '/api' and '/admin'.
  3. Step 3: Verify other options

    Options A, B, and D use incorrect methods or argument orders.
  4. Final Answer:

    const apiRouter = express.Router(); const adminRouter = express.Router(); app.use('/api', apiRouter); app.use('/admin', adminRouter); -> Option B
  5. Quick Check:

    Separate namespaces need separate routers and app.use() [OK]
Hint: Use separate routers and app.use('/path', router) [OK]
Common Mistakes:
  • Reversing arguments in app.use
  • Using app.route or app.attach incorrectly
  • Trying to attach routers without namespaces
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