Bird
Raised Fist0
Expressframework~5 mins

Conditional middleware execution in Express - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is middleware in Express?
Middleware is a function that runs during the request-response cycle. It can modify the request or response, or end the request.
Click to reveal answer
beginner
How can you run middleware only for certain routes in Express?
You can attach middleware only to specific routes by passing it as an argument before the route handler, so it runs conditionally.
Click to reveal answer
intermediate
How do you conditionally execute middleware based on a request property?
Inside the middleware, check the request property (like req.path or req.method). Call next() only if the condition is met; otherwise, skip or respond.
Click to reveal answer
beginner
What does calling next() do in Express middleware?
Calling next() passes control to the next middleware or route handler in the stack.
Click to reveal answer
intermediate
Give an example of conditional middleware execution in Express.
Example: Use middleware only if req.query.admin is 'true'. Inside middleware, check if req.query.admin === 'true', then call next(); else respond with 403.
Click to reveal answer
What is the purpose of middleware in Express?
ATo store data permanently
BTo style HTML pages
CTo create database connections
DTo handle requests and responses during the request cycle
How do you run middleware only for a specific route in Express?
AAttach middleware as an argument before the route handler
BWrite middleware inside the route handler
CUse middleware globally for all routes
DMiddleware cannot be route-specific
What happens if you don't call next() inside middleware?
AThe request will hang and not proceed
BThe next middleware runs automatically
CThe server restarts
DThe response is sent automatically
Which property can you check to conditionally run middleware?
Aconsole.log
Breq.method
Cres.statusCode
Dprocess.env
How can you skip middleware execution for some requests?
AMiddleware always runs for all requests
BRemove middleware from the app
CCheck condition inside middleware and call next() only if true
DUse a different server
Explain how to run middleware conditionally in Express based on the request path.
Think about how to decide inside middleware whether to continue or stop.
You got /4 concepts.
    Describe the role of next() in Express middleware and what happens if it is not called.
    Consider the flow of request handling in Express.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of conditional middleware in Express?
      easy
      A. To run middleware only when certain conditions are met
      B. To run all middleware for every request without exception
      C. To replace route handlers completely
      D. To stop the server from accepting requests

      Solution

      1. Step 1: Understand middleware role

        Middleware functions process requests and can modify them or respond.
      2. Step 2: Identify conditional middleware purpose

        Conditional middleware runs only when a specific condition is true, saving resources and controlling flow.
      3. Final Answer:

        To run middleware only when certain conditions are met -> Option A
      4. Quick Check:

        Conditional middleware = run only if condition true [OK]
      Hint: Think: middleware runs only if condition matches [OK]
      Common Mistakes:
      • Assuming middleware always runs for every request
      • Confusing middleware with route handlers
      • Thinking middleware stops server requests
      2. Which of the following is the correct way to conditionally execute middleware based on the request path?
      easy
      A. app.use((req, res, next) => { if (req.path === '/admin') res.send('OK'); });
      B. app.use((req, res, next) => { if (req.method === 'POST') res.send('Allowed'); else next(); });
      C. app.use((req, res, next) => { if (req.path = '/admin') next(); else next(); });
      D. app.use((req, res, next) => { if (req.path === '/admin') next(); else res.send('No access'); });

      Solution

      1. Step 1: Check condition syntax

        app.use((req, res, next) => { if (req.path === '/admin') next(); else res.send('No access'); }); correctly uses '===' to compare req.path to '/admin'.
      2. Step 2: Verify middleware flow

        app.use((req, res, next) => { if (req.path === '/admin') next(); else res.send('No access'); }); calls next() only if path matches; otherwise, it sends a response, stopping further middleware.
      3. Final Answer:

        app.use((req, res, next) => { if (req.path === '/admin') next(); else res.send('No access'); }); -> Option D
      4. Quick Check:

        Correct condition and flow = app.use((req, res, next) => { if (req.path === '/admin') next(); else res.send('No access'); }); [OK]
      Hint: Use '===' for comparison and call next() properly [OK]
      Common Mistakes:
      • Using single '=' instead of '===' for comparison
      • Not calling next() to continue middleware chain
      • Sending response without ending middleware properly
      3. Consider this middleware code snippet:
      app.use((req, res, next) => {
        if (req.query.token === '123') {
          console.log('Token valid');
          next();
        } else {
          res.status(401).send('Unauthorized');
        }
      });
      app.get('/', (req, res) => res.send('Welcome!'));

      What will be the output when a GET request is made to '/' with query ?token=123?
      medium
      A. Console logs 'Token valid' but response is 'Unauthorized'
      B. Console logs 'Token valid' and response is 'Welcome!'
      C. No response, request hangs
      D. Response is 'Unauthorized' with status 401

      Solution

      1. Step 1: Check token condition

        Request query token is '123', so condition is true and 'Token valid' logs.
      2. Step 2: Middleware calls next()

        Calling next() passes control to next handler, which sends 'Welcome!'.
      3. Final Answer:

        Console logs 'Token valid' and response is 'Welcome!' -> Option B
      4. Quick Check:

        Valid token triggers next() and welcome message [OK]
      Hint: If condition true, next() runs next handler [OK]
      Common Mistakes:
      • Assuming response is 'Unauthorized' despite valid token
      • Thinking middleware always sends response
      • Missing that next() continues to route handler
      4. Identify the error in this conditional middleware:
      app.use((req, res, next) => {
        if (req.headers['x-auth']) {
          next();
        }
        res.status(403).send('Forbidden');
      });
      medium
      A. Middleware does not check request method
      B. next() is called without arguments
      C. Missing else block causes response sent twice
      D. Headers property is misspelled

      Solution

      1. Step 1: Analyze middleware flow

        If header exists, next() is called but code continues to send 403 response anyway.
      2. Step 2: Identify missing else

        Without else, response is sent after next(), causing errors or double responses.
      3. Final Answer:

        Missing else block causes response sent twice -> Option C
      4. Quick Check:

        Always use else or return after next() [OK]
      Hint: Use else or return after next() to avoid double response [OK]
      Common Mistakes:
      • Not using else or return after next()
      • Assuming next() stops code execution
      • Ignoring middleware flow after next()
      5. You want to create middleware that only runs for POST requests to '/submit' and logs 'Processing submission'. Which code correctly implements this conditional middleware?
      hard
      A. app.use((req, res, next) => { if (req.path === '/submit' && req.method === 'POST') { console.log('Processing submission'); } next(); });
      B. app.use('/submit', (req, res, next) => { if (req.method === 'POST') { console.log('Processing submission'); } next(); });
      C. app.post('/submit', (req, res, next) => { console.log('Processing submission'); next(); });
      D. app.use('/submit', (req, res, next) => { if (req.method = 'POST') { console.log('Processing submission'); next(); } });

      Solution

      1. Step 1: Check condition for path and method

        app.use((req, res, next) => { if (req.path === '/submit' && req.method === 'POST') { console.log('Processing submission'); } next(); }); correctly checks both req.path and req.method inside middleware.
      2. Step 2: Confirm middleware calls next()

        app.use((req, res, next) => { if (req.path === '/submit' && req.method === 'POST') { console.log('Processing submission'); } next(); }); calls next() after logging, ensuring request continues.
      3. Step 3: Evaluate other options

        app.use('/submit', (req, res, next) => { if (req.method === 'POST') { console.log('Processing submission'); } next(); }); runs on all methods for '/submit', app.post('/submit', (req, res, next) => { console.log('Processing submission'); next(); }); is a route handler, app.use('/submit', (req, res, next) => { if (req.method = 'POST') { console.log('Processing submission'); next(); } }); uses '=' instead of '===' causing assignment error.
      4. Final Answer:

        app.use((req, res, next) => { if (req.path === '/submit' && req.method === 'POST') { console.log('Processing submission'); } next(); }); -> Option A
      5. Quick Check:

        Check both path and method, call next() [OK]
      Hint: Check both path and method inside middleware, then call next() [OK]
      Common Mistakes:
      • Using assignment '=' instead of comparison '==='
      • Not calling next() after middleware logic
      • Confusing route handlers with 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