📖 Scenario: You are building a simple web server using Express. To respond correctly to users, you need to understand the req object, which holds all the information about the user's request.Think of req as a letter you receive in the mail. It tells you who sent it, what they want, and any extra details. If you don't read it carefully, you might send the wrong reply.
🎯 Goal: Build a basic Express server that reads the user's name from the request query and sends a greeting. This shows how important it is to understand the req object to get the right data and respond properly.
📋 What You'll Learn
Create an Express app
Use req.query to get the user's name
Send a greeting message using res.send()
Listen on port 3000
💡 Why This Matters
🌍 Real World
Web servers need to read user requests carefully to respond correctly. Understanding the <code>req</code> object helps you get user data like form inputs, query strings, and headers.
💼 Career
Backend developers use Express and similar frameworks to build APIs and web servers. Knowing how to read the request object is essential for handling user input and building interactive web applications.
Progress0 / 4 steps
1
Set up Express app
Create a variable called express that requires the 'express' module. Then create a variable called app by calling express().
Express
Hint
Use require('express') to import Express and then call it to create the app.
2
Add a route to read query parameter
Use app.get to create a route for path '/'. Inside the callback, use req.query.name to get the user's name.
Express
Hint
Use req.query.name to get the name from the URL query string.
3
Send a greeting using the name
Inside the app.get callback, use res.send to send the message `Hello, ${name}!`. Use a template string for this.
Express
Hint
Use res.send with a template string to include the name in the greeting.
4
Start the server on port 3000
Add app.listen to start the server on port 3000. Use a callback function that does nothing or is empty.
Express
Hint
Use app.listen(3000, () => {}) to start the server on port 3000.
Practice
(1/5)
1. In Express, what does the req object represent?
easy
A. Information sent by the user to the server
B. The server's response to the user
C. A database connection
D. A middleware function
Solution
Step 1: Understand the role of req in Express
The req object contains all the information sent by the user to the server, such as URL parameters, query strings, and request body.
Step 2: Differentiate req from other objects
The server's response is handled by res, not req. Database connections and middleware are separate concepts.
Final Answer:
Information sent by the user to the server -> Option A
Quick Check:
req = user info [OK]
Hint: Remember: req = request from user [OK]
Common Mistakes:
Confusing req with res (response)
Thinking req is a database connection
Mixing req with middleware functions
2. Which of the following is the correct way to access URL parameters in Express?
easy
A. req.body.params
B. req.params
C. req.query.params
D. req.url.params
Solution
Step 1: Recall how Express stores URL parameters
Express stores URL parameters in req.params, which holds key-value pairs from the route.
Step 2: Check other options for correctness
req.body holds POST data, req.query holds query strings, and req.url is a string, not an object with params.
Final Answer:
req.params -> Option B
Quick Check:
URL params = req.params [OK]
Hint: URL params are always in req.params [OK]
Common Mistakes:
Using req.body to get URL params
Confusing query strings with URL params
Trying to access params from req.url string
3. What will be logged by this Express route handler?
A. Using req.query instead of req.body to access POST data
B. Missing res.end() after res.send()
C. Route should be app.get, not app.post
D. req.body is not available without middleware
Solution
Step 1: Check how POST data is accessed
POST data is sent in the request body and accessed via req.body, not req.query.
Step 2: Identify the mistake in the code
The code incorrectly tries to get POST data from req.query.body, which is wrong; it should be req.body.
Final Answer:
Using req.query instead of req.body to access POST data -> Option A
Quick Check:
POST data = req.body, not req.query [OK]
Hint: POST data is in req.body, not req.query [OK]
Common Mistakes:
Accessing POST data from req.query
Forgetting to use body-parser middleware
Confusing HTTP methods and data locations
5. You want to create an Express route that responds differently based on a URL parameter type and a query parameter sort. Which code correctly accesses both parameters?
hard
A. app.get('/items/:type', (req, res) => { const t = req.body.type; const s = req.body.sort; res.send(`${t} sorted by ${s}`); });
B. app.get('/items/:type', (req, res) => { const t = req.query.type; const s = req.params.sort; res.send(`${t} sorted by ${s}`); });
C. app.get('/items', (req, res) => { const t = req.params.type; const s = req.query.sort; res.send(`${t} sorted by ${s}`); });
D. app.get('/items/:type', (req, res) => { const t = req.params.type; const s = req.query.sort; res.send(`${t} sorted by ${s}`); });
Solution
Step 1: Identify where URL and query parameters are stored
URL parameters like type are in req.params, and query parameters like sort are in req.query.
Step 2: Check each option for correct usage
app.get('/items/:type', (req, res) => { const t = req.params.type; const s = req.query.sort; res.send(`${t} sorted by ${s}`); }); correctly uses req.params.type and req.query.sort. app.get('/items/:type', (req, res) => { const t = req.query.type; const s = req.params.sort; res.send(`${t} sorted by ${s}`); }); swaps them incorrectly. app.get('/items', (req, res) => { const t = req.params.type; const s = req.query.sort; res.send(`${t} sorted by ${s}`); }); misses the URL param in route. app.get('/items/:type', (req, res) => { const t = req.body.type; const s = req.body.sort; res.send(`${t} sorted by ${s}`); }); wrongly uses req.body which is for POST data.