0
0
Expressframework~20 mins

Namespaces for separation in Express - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Express Namespaces 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 routes with namespaces?

Consider this Express app code that uses namespaces (routers) to separate routes:

const express = require('express');
const app = express();

const apiRouter = express.Router();
apiRouter.get('/users', (req, res) => res.send('API Users'));

const adminRouter = express.Router();
adminRouter.get('/users', (req, res) => res.send('Admin Users'));

app.use('/api', apiRouter);
app.use('/admin', adminRouter);

app.listen(3000);

What will be the response when a client requests GET /admin/users?

Express
const express = require('express');
const app = express();

const apiRouter = express.Router();
apiRouter.get('/users', (req, res) => res.send('API Users'));

const adminRouter = express.Router();
adminRouter.get('/users', (req, res) => res.send('Admin Users'));

app.use('/api', apiRouter);
app.use('/admin', adminRouter);

app.listen(3000);
AThe response is 'Admin Users'.
BThe response is 'API Users'.
C404 Not Found error.
D500 Internal Server Error.
Attempts:
2 left
💡 Hint

Think about how the app.use prefixes the routes in each router.

📝 Syntax
intermediate
2:00remaining
Which option correctly creates a namespace router in Express?

Which code snippet correctly creates a router namespace for /blog in Express?

Aconst blogRouter = express.Router; app.use('/blog', blogRouter);
Bconst blogRouter = new express.Router(); app.use('/blog', blogRouter);
Cconst blogRouter = express(); app.use('/blog', blogRouter);
Dconst blogRouter = express.Router(); app.use('/blog', blogRouter);
Attempts:
2 left
💡 Hint

Remember how to create a router instance in Express.

🔧 Debug
advanced
2:00remaining
Why does this namespaced route not respond as expected?

Given this Express code:

const express = require('express');
const app = express();
const userRouter = express.Router();

userRouter.get('/profile', (req, res) => res.send('User Profile'));

app.use('/user', userRouter);

app.listen(3000);

When requesting GET /profile, the server responds with 404. Why?

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

userRouter.get('/profile', (req, res) => res.send('User Profile'));

app.use('/user', userRouter);

app.listen(3000);
ABecause the route is mounted under '/user', so '/profile' is not matched; the correct path is '/user/profile'.
BBecause the route handler is missing a next() call.
CBecause the router was not attached with app.use().
DBecause the server is not listening on port 3000.
Attempts:
2 left
💡 Hint

Check the full path the route is mounted on.

state_output
advanced
2:00remaining
What is the output of nested namespaces with middleware?

Consider this Express app:

const express = require('express');
const app = express();

const apiRouter = express.Router();
const v1Router = express.Router();

v1Router.use((req, res, next) => {
  req.version = 'v1';
  next();
});

v1Router.get('/data', (req, res) => {
  res.send(`API version: ${req.version}`);
});

apiRouter.use('/v1', v1Router);
app.use('/api', apiRouter);

app.listen(3000);

What will be the response body when a client requests GET /api/v1/data?

Express
const express = require('express');
const app = express();

const apiRouter = express.Router();
const v1Router = express.Router();

v1Router.use((req, res, next) => {
  req.version = 'v1';
  next();
});

v1Router.get('/data', (req, res) => {
  res.send(`API version: ${req.version}`);
});

apiRouter.use('/v1', v1Router);
app.use('/api', apiRouter);

app.listen(3000);
A404 Not Found
BAPI version: undefined
CAPI version: v1
D500 Internal Server Error
Attempts:
2 left
💡 Hint

Look at how middleware sets req.version before the route handler.

🧠 Conceptual
expert
2:00remaining
Which statement about Express namespaces (routers) is true?

Choose the correct statement about using namespaces (routers) in Express:

ARouters cannot have middleware; middleware must be applied only on the main app instance.
BRouters can be nested and each can have its own middleware and routes, allowing modular route separation.
CRoutes defined in routers lose access to the original request object properties.
DRouters automatically merge query parameters from parent routers without extra configuration.
Attempts:
2 left
💡 Hint

Think about how routers help organize routes and middleware.