Bird
Raised Fist0
Expressframework~10 mins

app.all and app.use for catch-all 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 catch-all route using app.all.

Express
app.[1]('*', (req, res) => {
  res.send('Catch-all route');
});
Drag options to blanks, or click blank then click option'
Aall
Buse
Cget
Dpost
Attempts:
3 left
💡 Hint
Common Mistakes
Using app.get or app.post which only handle specific HTTP methods.
Using app.use without specifying the path correctly.
2fill in blank
medium

Complete the code to create a catch-all middleware using app.use.

Express
app.[1]((req, res) => {
  res.status(404).send('Not Found');
});
Drag options to blanks, or click blank then click option'
Aall
Bpost
Cget
Duse
Attempts:
3 left
💡 Hint
Common Mistakes
Using app.all instead of app.use for middleware.
Specifying a path when you want a catch-all middleware.
3fill in blank
hard

Fix the error in the catch-all route that should handle all HTTP methods for any path.

Express
app.[1]('*', (req, res) => {
  res.send('This is a catch-all route');
});
Drag options to blanks, or click blank then click option'
Aall
Buse
Cget
Dpost
Attempts:
3 left
💡 Hint
Common Mistakes
Using app.use with a path, which does not behave as a route handler.
Using app.get or app.post which only handle specific methods.
4fill in blank
hard

Fill both blanks to create a catch-all middleware that sends a 404 status and message.

Express
app.[1]((req, res) => {
  res.status([2]).send('Page not found');
});
Drag options to blanks, or click blank then click option'
Ause
Ball
C404
D500
Attempts:
3 left
💡 Hint
Common Mistakes
Using app.all instead of app.use for middleware.
Sending status 500 which means server error, not 'not found'.
5fill in blank
hard

Fill all three blanks to create a catch-all route that logs the method, path, and sends a 404 response.

Express
app.[1]('*', (req, res) => {
  console.log(req.[2], req.[3]);
  res.status(404).send('Not Found');
});
Drag options to blanks, or click blank then click option'
Aall
Bmethod
Cpath
Durl
Attempts:
3 left
💡 Hint
Common Mistakes
Using req.url instead of req.path which includes query strings.
Using app.use instead of app.all for route handlers.

Practice

(1/5)
1. What does app.all('/path', handler) do in an Express app?
easy
A. It handles all HTTP methods for the specific '/path' route.
B. It adds middleware for all routes starting with '/path'.
C. It only handles GET requests for '/path'.
D. It handles all routes and methods globally.

Solution

  1. Step 1: Understand app.all usage

    app.all is designed to handle every HTTP method (GET, POST, PUT, DELETE, etc.) but only for the exact route specified.
  2. Step 2: Compare with other methods

    app.use adds middleware for all methods but for routes starting with a prefix, not just one exact path.
  3. Final Answer:

    It handles all HTTP methods for the specific '/path' route. -> Option A
  4. Quick Check:

    app.all = all methods, exact path [OK]
Hint: Remember: app.all = all methods, one exact path [OK]
Common Mistakes:
  • Confusing app.all with app.use
  • Thinking app.all handles all routes globally
  • Assuming app.all only handles GET requests
2. Which of the following is the correct syntax to add a catch-all middleware for all routes in Express without specifying a path?
easy
A. app.all('*', (req, res) => { res.send('Catch all'); });
B. app.use((req, res) => { res.send('Catch all'); });
C. app.use('*', (req, res) => { res.send('Catch all'); });
D. app.all((req, res) => { res.send('Catch all'); });

Solution

  1. Step 1: Understand catch-all middleware syntax

    Using app.use without a path applies middleware to all routes and methods.
  2. Step 2: Analyze options

    app.all('*', (req, res) => { res.send('Catch all'); }); and app.use('*', (req, res) => { res.send('Catch all'); }); both specify a path '*'. app.all((req, res) => { res.send('Catch all'); }); is invalid syntax.
  3. Final Answer:

    app.use((req, res) => { res.send('Catch all'); }); -> Option B
  4. Quick Check:

    app.use without path = catch-all middleware [OK]
Hint: app.use without path catches all routes and methods [OK]
Common Mistakes:
  • Using app.use('*', ...) which specifies a path
  • Using app.all without a path argument
  • Confusing app.all and app.use syntax
3. What will be the output when a GET request is made to '/test' in this Express app?
const express = require('express');
const app = express();

app.all('/test', (req, res, next) => {
  res.write('all ');
  next();
});

app.use('/test', (req, res) => {
  res.end('use');
});

app.listen(3000);
medium
A. Error: Cannot set headers after they are sent
B. use
C. all use
D. all

Solution

  1. Step 1: Trace app.all handler

    For GET '/test', app.all('/test') runs first, writes 'all ' to response, then calls next() to continue.
  2. Step 2: Trace app.use handler

    Next, app.use('/test') matches and ends the response with 'use'. So the full response is 'all use'.
  3. Final Answer:

    all use -> Option C
  4. Quick Check:

    app.all writes + next() then app.use ends response [OK]
Hint: app.all runs first, next() continues to app.use [OK]
Common Mistakes:
  • Assuming app.use runs before app.all
  • Thinking res.end in app.use causes error here
  • Ignoring next() call in app.all
4. Identify the error in this Express code snippet:
app.all('/api', (req, res) => {
  res.send('API all methods');
  next();
});
medium
A. Calling next() after res.send() causes an error.
B. app.all cannot be used with '/api' path.
C. res.send() must be called twice in app.all.
D. No error, code works fine.

Solution

  1. Step 1: Understand res.send() behavior

    res.send() ends the response and sends data to client.
  2. Step 2: Analyze next() call after res.send()

    Calling next() after res.send() tries to continue middleware chain after response ended, causing an error.
  3. Final Answer:

    Calling next() after res.send() causes an error. -> Option A
  4. Quick Check:

    res.send ends response; next() after it is wrong [OK]
Hint: Never call next() after res.send() or res.end() [OK]
Common Mistakes:
  • Thinking next() is always safe after res.send()
  • Believing app.all can't use paths
  • Ignoring response end behavior
5. You want to create a global catch-all middleware without specifying a path that logs every request method and URL, then passes control to the next handler. Which code correctly implements this in Express?
hard
A. app.all('*', (req, res, next) => { console.log(req.method, req.url); next(); });
B. app.all((req, res, next) => { console.log(req.method, req.url); next(); });
C. app.use('*', (req, res, next) => { console.log(req.method, req.url); next(); });
D. app.use((req, res, next) => { console.log(req.method, req.url); next(); });

Solution

  1. Step 1: Understand global middleware with app.use

    Using app.use without a path applies middleware to all routes and methods globally.
  2. Step 2: Analyze options for logging middleware

    app.all('*', (req, res, next) => { console.log(req.method, req.url); next(); }); and app.use('*', (req, res, next) => { console.log(req.method, req.url); next(); }); specify a path '*'. app.all((req, res, next) => { console.log(req.method, req.url); next(); }); is invalid syntax.
  3. Final Answer:

    app.use((req, res, next) => { console.log(req.method, req.url); next(); }); -> Option D
  4. Quick Check:

    app.use without path = global middleware [OK]
Hint: Use app.use without path for global middleware [OK]
Common Mistakes:
  • Using app.use('*', ...) which specifies a path
  • Using app.all without path argument
  • Forgetting to call next() in middleware
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