Bird
Raised Fist0
Expressframework~10 mins

Application-level middleware 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 an application-level middleware that logs every request method.

Express
app.use(function(req, res, next) {
  console.log(req.[1]);
  next();
});
Drag options to blanks, or click blank then click option'
Aurl
Bmethod
Cbody
Dheaders
Attempts:
3 left
💡 Hint
Common Mistakes
Using req.url instead of req.method
Trying to log req.body which may not exist yet
Forgetting to call next() to continue middleware chain
2fill in blank
medium

Complete the code to add a middleware that sets a custom header 'X-App-Version' with value '1.0'.

Express
app.use(function(req, res, next) {
  res.setHeader('[1]', '1.0');
  next();
});
Drag options to blanks, or click blank then click option'
AAuthorization
BContent-Type
CX-App-Version
DAccept
Attempts:
3 left
💡 Hint
Common Mistakes
Using standard headers like Content-Type instead of the custom one
Misspelling the header name
Not calling next() to continue middleware
3fill in blank
hard

Fix the error in the middleware that tries to parse JSON body but is missing a function call.

Express
app.use(express.[1]());
Drag options to blanks, or click blank then click option'
Ajson
Burlencoded
Crouter
Dstatic
Attempts:
3 left
💡 Hint
Common Mistakes
Using express.json without parentheses
Using express.urlencoded for JSON data
Using express.static which serves files
4fill in blank
hard

Fill both blanks to create middleware that logs the request URL and then calls next.

Express
app.use(function(req, res, [1]) {
  console.log(req.[2]);
  next();
});
Drag options to blanks, or click blank then click option'
Anext
Bmethod
Curl
Dres
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'res' instead of 'next' as third parameter
Logging req.method instead of req.url
Forgetting to call next()
5fill in blank
hard

Fill all three blanks to create middleware that checks if a user is authenticated and calls next or sends 401.

Express
app.use(function(req, res, next) {
  if (req.[1] && req.[2].isAuthenticated()) {
    [3]();
  } else {
    res.status(401).send('Unauthorized');
  }
});
Drag options to blanks, or click blank then click option'
Auser
Bsession
Cnext
Dbody
Attempts:
3 left
💡 Hint
Common Mistakes
Checking req.session instead of req.user
Calling next without parentheses
Not sending 401 status on failure

Practice

(1/5)
1. What is the main purpose of application-level middleware in Express?
easy
A. To run code for every request or specific routes before the final handler
B. To directly send HTML files to the client
C. To connect Express with a database
D. To create new HTTP servers

Solution

  1. Step 1: Understand middleware role

    Application-level middleware runs before route handlers to process requests.
  2. Step 2: Identify middleware usage

    It can modify requests, responses, or decide to stop the request cycle early.
  3. Final Answer:

    To run code for every request or specific routes before the final handler -> Option A
  4. Quick Check:

    Middleware runs before handlers [OK]
Hint: Middleware runs before routes to process requests [OK]
Common Mistakes:
  • Confusing middleware with route handlers
  • Thinking middleware creates servers
  • Assuming middleware connects databases directly
2. Which of the following is the correct syntax to add application-level middleware in Express?
easy
A. app.addMiddleware(function(req, res) { next(); });
B. app.middleware((req, res) => { console.log('Middleware'); });
C. app.use((req, res, next) => { console.log('Middleware'); next(); });
D. app.routeMiddleware((req, res, next) => { next(); });

Solution

  1. Step 1: Recall Express middleware syntax

    Express uses app.use() to add middleware functions.
  2. Step 2: Check function parameters

    Middleware functions receive req, res, next and must call next() to continue.
  3. Final Answer:

    app.use((req, res, next) => { console.log('Middleware'); next(); }); -> Option C
  4. Quick Check:

    app.use with (req, res, next) and next() [OK]
Hint: Middleware uses app.use with three parameters and calls next() [OK]
Common Mistakes:
  • Using non-existent methods like app.middleware
  • Omitting the next parameter or call
  • Confusing middleware with route handlers
3. Consider this Express code snippet:
app.use((req, res, next) => { console.log('First'); next(); });
app.use((req, res, next) => { console.log('Second'); next(); });
app.get('/', (req, res) => { res.send('Hello'); });

What will be printed in the console when a GET request is made to '/'?
medium
A. Second\nFirst
B. First\nSecond
C. Hello
D. No output

Solution

  1. Step 1: Understand middleware execution order

    Middleware runs in the order they are added with app.use().
  2. Step 2: Trace console logs

    First middleware logs 'First' then calls next(), second logs 'Second' then calls next(), then route sends response.
  3. Final Answer:

    First\nSecond -> Option B
  4. Quick Check:

    Middleware executes in order added [OK]
Hint: Middleware logs appear in order of app.use calls [OK]
Common Mistakes:
  • Assuming route handler logs to console
  • Thinking middleware runs after route
  • Mixing order of middleware execution
4. What is the problem with this middleware code?
app.use((req, res, next) => { console.log('Middleware running'); });
app.get('/', (req, res) => { res.send('Done'); });
medium
A. Middleware should be added after routes
B. Middleware syntax is incorrect
C. Route handler is missing parameters
D. Missing call to next(), request will hang

Solution

  1. Step 1: Check middleware function

    The middleware logs a message but does not call next().
  2. Step 2: Understand effect of missing next()

    Without calling next(), the request does not proceed to the route handler, causing the request to hang.
  3. Final Answer:

    Missing call to next(), request will hang -> Option D
  4. Quick Check:

    Middleware must call next() to continue [OK]
Hint: Always call next() in middleware to avoid hanging requests [OK]
Common Mistakes:
  • Forgetting to call next() in middleware
  • Thinking middleware runs after routes
  • Assuming middleware syntax is wrong without checking next()
5. You want to create middleware that only runs for routes starting with '/admin'. Which is the correct way to apply this middleware?
hard
A. app.use('/admin', (req, res, next) => { console.log('Admin middleware'); next(); });
B. app.use((req, res, next) => { if(req.url.startsWith('admin')) { console.log('Admin middleware'); } next(); });
C. app.get('/admin', (req, res, next) => { console.log('Admin middleware'); next(); });
D. app.use('*admin', (req, res, next) => { console.log('Admin middleware'); next(); });

Solution

  1. Step 1: Understand path filtering in middleware

    Express allows specifying a path prefix in app.use(path, middleware) to run middleware only on matching routes.
  2. Step 2: Evaluate options

    app.use('/admin', (req, res, next) => { console.log('Admin middleware'); next(); }); correctly uses app.use('/admin', ...) for prefix matching. app.use((req, res, next) => { if(req.url.startsWith('admin')) { console.log('Admin middleware'); } next(); }); has incorrect condition (startsWith('admin') misses leading /, never matches). app.get('/admin', (req, res, next) => { console.log('Admin middleware'); next(); }); is a route handler, not middleware. app.use('*admin', (req, res, next) => { console.log('Admin middleware'); next(); }); *admin matches paths containing admin at the end, not starting with /admin.
  3. Final Answer:

    app.use('/admin', (req, res, next) => { console.log('Admin middleware'); next(); }); -> Option A
  4. Quick Check:

    Use app.use with path prefix for selective middleware [OK]
Hint: Use app.use('/path', middleware) to target specific routes [OK]
Common Mistakes:
  • Using route handlers instead of middleware
  • Incorrect conditional checks in global middleware
  • Wrong path patterns like wildcards in wrong position
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