📖 Scenario: You are building a simple web server using Express.js. To keep your code organized, you want to separate the routes related to users into their own router.
🎯 Goal: Create an Express router for user-related routes and connect it to the main Express app.
📋 What You'll Learn
Create an Express router instance
Define a GET route on the router for path '/' that sends 'User list' as response
Create an Express app instance
Use the router on the '/users' path in the app
💡 Why This Matters
🌍 Real World
Express routers help organize routes in web servers by grouping related routes together. This makes code easier to read and maintain.
💼 Career
Knowing how to create and use Express routers is essential for backend developers working with Node.js and Express to build scalable web applications.
Progress0 / 4 steps
1
Set up Express and create a router
Write code to import Express and create a router instance called userRouter.
Express
Hint
Use require('express') to import Express and express.Router() to create the router.
2
Add a GET route to the router
Add a GET route on userRouter for path '/' that sends the text 'User list' as the response.
Express
Hint
Use userRouter.get('/', (req, res) => { res.send('User list'); }) to define the route.
3
Create the Express app
Create an Express app instance called app by calling express().
Express
Hint
Call express() and assign it to app.
4
Use the router in the app
Connect the userRouter to the app so that all routes in userRouter are served under the path '/users'.
Express
Hint
Use app.use('/users', userRouter) to mount the router.
Practice
(1/5)
1. What is the main purpose of using express.Router() in an Express app?
easy
A. To handle database connections
B. To start the Express server
C. To create a modular set of routes that can be mounted separately
D. To serve static files
Solution
Step 1: Understand what express.Router() does
This function creates a new router object that can hold routes separately from the main app.
Step 2: Identify the purpose of modular routes
Modular routes help organize code by grouping related routes, making the app easier to maintain.
Final Answer:
To create a modular set of routes that can be mounted separately -> Option C
Quick Check:
Router = modular routes [OK]
Hint: Router organizes routes separately for cleaner code [OK]
Common Mistakes:
Thinking router starts the server
Confusing router with database handling
Assuming router serves static files
2. Which of the following is the correct way to create a new Express router?
easy
A. const router = express.Router();
B. const router = new express.Router();
C. const router = express.createRouter();
D. const router = Router();
Solution
Step 1: Recall the Express Router creation syntax
The correct method is calling Router() as a function on the express object.
A. Missing parentheses when creating router instance
B. Route path should be '/info/' with trailing slash
C. res.send should be res.json
D. module.exports should export an object, not router
Solution
Step 1: Check router creation syntax
The code uses express.Router without parentheses, so it assigns the function itself, not an instance.
Step 2: Confirm correct router instantiation
It should be express.Router() to create a router instance that supports route methods.
Final Answer:
Missing parentheses when creating router instance -> Option A
Quick Check:
Router needs () to create instance [OK]
Hint: Router must be called as a function with () [OK]
Common Mistakes:
Forgetting () after express.Router
Thinking trailing slash is required
Confusing res.send with res.json
5. You want to create two routers: one for /users and one for /products. How do you correctly mount them in your Express app so that requests to /users/list and /products/list work as expected?
hard
A. app.use(usersRouter); app.use(productsRouter);
B. app.use('/users', usersRouter); app.use('/products', productsRouter);
C. app.use('/list', usersRouter); app.use('/list', productsRouter);
D. app.get('/users', usersRouter); app.get('/products', productsRouter);
Solution
Step 1: Understand router mounting with path prefixes
To handle routes under /users and /products, mount each router with those paths using app.use().
Step 2: Check each option for correct usage
app.use('/users', usersRouter); app.use('/products', productsRouter); mounts routers correctly with prefixes. app.use(usersRouter); app.use(productsRouter); mounts without prefixes, so routes won't be under desired paths. app.use('/list', usersRouter); app.use('/list', productsRouter); mounts both under /list, causing conflicts. app.get('/users', usersRouter); app.get('/products', productsRouter); uses app.get incorrectly with routers.
Final Answer:
app.use('/users', usersRouter); app.use('/products', productsRouter); -> Option B
Quick Check:
Mount routers with correct path prefixes [OK]
Hint: Use app.use with path prefix for each router [OK]
Common Mistakes:
Mounting routers without path prefix
Using app.get instead of app.use for routers
Mounting multiple routers on same path
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.