Bird
Raised Fist0
Expressframework~10 mins

GET route handling in Express - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - GET route handling
Client sends GET request
↓
Express server receives request
↓
Match request URL to route handler
Yes↓
Execute route handler function
↓
Send response back to client
↓
End
This flow shows how Express handles a GET request: client sends request, server matches route, runs handler, and sends response.
Execution Sample
Express
const express = require('express');
const app = express();
app.get('/hello', (req, res) => {
  res.send('Hello World!');
});
app.listen(3000);
This code sets up an Express server that responds with 'Hello World!' when a GET request is made to '/hello'.
Execution Table
StepActionRequest URLRoute MatchedHandler ExecutedResponse Sent
1Client sends GET request/helloNoNoNo
2Server receives request/helloNoNoNo
3Check route '/hello'/helloYesNoNo
4Execute handler for '/hello'/helloYesYesNo
5Send response 'Hello World!'/helloYesYesYes
6Request complete/helloYesYesYes
💡 Request completes after response is sent to client.
Variable Tracker
VariableStartAfter Step 1After Step 3After Step 4Final
request.urlundefined/hello/hello/hello/hello
routeMatchedfalsefalsetruetruetrue
handlerExecutedfalsefalsefalsetruetrue
responseSentfalsefalsefalsefalsetrue
Key Moments - 2 Insights
Why does the server only execute the handler when the route matches?
Because Express checks the request URL against defined routes (see Step 3 in execution_table). If it doesn't match, the handler won't run.
What happens if the response is not sent in the handler?
The client will wait indefinitely because the server never completes the request (see Step 5 where responseSent changes to true).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step does the route get matched?
AStep 3
BStep 2
CStep 4
DStep 5
💡 Hint
Check the 'Route Matched' column in the execution_table.
According to variable_tracker, what is the value of 'handlerExecuted' after Step 3?
Atrue
Bfalse
Cundefined
Dnull
💡 Hint
Look at the 'handlerExecuted' row and the 'After Step 3' column.
If the client sends a GET request to '/bye', what would happen in the execution table?
AResponse sent immediately without handler
BRoute Matched would be 'Yes' and handler executed
CRoute Matched would be 'No' and handler not executed
DServer crashes
💡 Hint
Routes only match exact paths defined in Express (see Step 3).
Concept Snapshot
GET route handling in Express:
- Use app.get(path, handler) to define a GET route
- When a client requests that path, Express runs the handler
- Handler receives request and response objects
- Use res.send() to send response back
- Server listens on a port to accept requests
Full Transcript
This visual execution shows how Express handles a GET request. First, the client sends a GET request to the server. The server receives it and checks if the URL matches any defined GET routes. If it matches, Express runs the route handler function. The handler sends a response back to the client, completing the request. Variables like request.url, routeMatched, handlerExecuted, and responseSent change step-by-step to track progress. Key moments include understanding route matching and the importance of sending a response. The quiz tests knowledge of these steps and variable states.

Practice

(1/5)
1. What does the app.get() method do in an Express app?
easy
A. Starts the Express server and listens on a port
B. Defines a route to handle GET requests at a specific URL
C. Sends a POST request to a server
D. Deletes a route from the Express app

Solution

  1. Step 1: Understand the purpose of app.get()

    The app.get() method is used to define a route that listens for GET requests on a given URL path.
  2. Step 2: Compare with other methods

    Other methods like app.post() handle POST requests, and app.listen() starts the server, so they do not define GET routes.
  3. Final Answer:

    Defines a route to handle GET requests at a specific URL -> Option B
  4. Quick Check:

    app.get() defines GET routes [OK]
Hint: app.get() always sets up a GET route handler [OK]
Common Mistakes:
  • Confusing app.get() with app.listen()
  • Thinking app.get() sends requests instead of handling them
  • Mixing GET with POST methods
2. Which of the following is the correct syntax to create a GET route for the path /hello that sends "Hello World" as a response?
easy
A. app.get('/hello', (req, res) => { res.send('Hello World'); });
B. app.get('/hello', (res, req) => { res.send('Hello World'); });
C. app.get('/hello', (req, res) => { res.write('Hello World'); });
D. app.get('/hello', (req, res) => { res.sendHello('Hello World'); });

Solution

  1. Step 1: Check parameter order in callback

    The callback function parameters must be req first, then res. app.get('/hello', (res, req) => { res.send('Hello World'); }); reverses them, which is incorrect.
  2. Step 2: Verify response method usage

    The correct method to send a response string is res.send(). app.get('/hello', (req, res) => { res.write('Hello World'); }); uses res.write() which is not standard in Express, and app.get('/hello', (req, res) => { res.sendHello('Hello World'); }); uses a non-existent method res.sendHello().
  3. Final Answer:

    app.get('/hello', (req, res) => { res.send('Hello World'); }); -> Option A
  4. Quick Check:

    Correct syntax uses req, res and res.send() [OK]
Hint: Use (req, res) and res.send() to respond in GET routes [OK]
Common Mistakes:
  • Swapping req and res parameters
  • Using res.write() instead of res.send()
  • Calling non-existent response methods
3. What will be the output when a GET request is made to /user/42 with this route handler?
app.get('/user/:id', (req, res) => {
  res.send(`User ID is ${req.params.id}`);
});
medium
A. User ID is undefined
B. User ID is :id
C. Error: req.params is not defined
D. User ID is 42

Solution

  1. Step 1: Understand route parameters

    The route /user/:id captures the part after /user/ as req.params.id.
  2. Step 2: Substitute parameter in response

    When visiting /user/42, req.params.id is "42", so the response is "User ID is 42".
  3. Final Answer:

    User ID is 42 -> Option D
  4. Quick Check:

    Route params fill req.params.id correctly [OK]
Hint: Use req.params to get URL parts in routes [OK]
Common Mistakes:
  • Using req.params without defining route parameter
  • Expecting literal ':id' in output
  • Forgetting to use backticks for template strings
4. Identify the error in this GET route handler:
app.get('/data', (req, res) => {
  res.send('Data received')
  res.send('Another response');
});
medium
A. Missing semicolon after first res.send()
B. Route path should be '/data/' with trailing slash
C. Cannot call res.send() twice in the same request handler
D. req parameter is unused and causes error

Solution

  1. Step 1: Check response sending rules

    Express allows sending only one response per request. Calling res.send() twice causes an error.
  2. Step 2: Analyze other options

    Missing semicolons do not cause runtime errors here, trailing slash is optional, and unused parameters do not cause errors.
  3. Final Answer:

    Cannot call res.send() twice in the same request handler -> Option C
  4. Quick Check:

    Only one res.send() per request allowed [OK]
Hint: Send response only once per route handler [OK]
Common Mistakes:
  • Calling res.send() multiple times
  • Thinking missing semicolons cause errors
  • Confusing trailing slash necessity
5. You want to create a GET route /product/:category/:id that responds with a message like "Category: electronics, ID: 123". Which code correctly implements this?
hard
A. app.get('/product/:category/:id', (req, res) => { res.send(`Category: ${req.params.category}, ID: ${req.params.id}`); });
B. app.get('/product/:category/:id', (req, res) => { res.send('Category: req.params.category, ID: req.params.id'); });
C. app.get('/product/:category/:id', (res, req) => { res.send(`Category: ${req.params.category}, ID: ${req.params.id}`); });
D. app.get('/product/:category/:id', (req, res) => { res.send(`Category: ${req.query.category}, ID: ${req.query.id}`); });

Solution

  1. Step 1: Use correct parameter order and template literals

    The callback must have (req, res) and use backticks with ${} to insert variables. app.get('/product/:category/:id', (req, res) => { res.send(`Category: ${req.params.category}, ID: ${req.params.id}`); }); does this correctly.
  2. Step 2: Use req.params for URL parameters

    Route parameters are accessed via req.params, not req.query. app.get('/product/:category/:id', (req, res) => { res.send(`Category: ${req.query.category}, ID: ${req.query.id}`); }); incorrectly uses req.query. app.get('/product/:category/:id', (req, res) => { res.send('Category: req.params.category, ID: req.params.id'); }); uses quotes, so variables won't be evaluated. app.get('/product/:category/:id', (res, req) => { res.send(`Category: ${req.params.category}, ID: ${req.params.id}`); }); swaps parameters.
  3. Final Answer:

    app.get('/product/:category/:id', (req, res) => { res.send(`Category: ${req.params.category}, ID: ${req.params.id}`); }); -> Option A
  4. Quick Check:

    Use req.params and template literals correctly [OK]
Hint: Use req.params and backticks for dynamic route responses [OK]
Common Mistakes:
  • Swapping req and res parameters
  • Using string quotes instead of template literals
  • Using req.query instead of req.params for route params
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