Understanding req helps you get information from the user's request. This lets your app respond correctly.
Why understanding req matters in Express
app.get('/path', (req, res) => { // use req to get info const data = req.body; const query = req.query; const params = req.params; // respond res.send('Got your data'); });
req stands for request and holds all info sent by the user.
You use req.body for form data, req.query for URL queries, and req.params for URL parts.
app.get('/user/:id', (req, res) => { const userId = req.params.id; res.send(`User ID is ${userId}`); });
app.get('/search', (req, res) => { const term = req.query.term; res.send(`Search term is ${term}`); });
app.post('/submit', (req, res) => { const name = req.body.name; res.send(`Hello, ${name}`); });
This program starts a server that listens for POST requests at /greet. It reads the name from the request body and replies with a greeting. If no name is sent, it says Hello, Guest!
import express from 'express'; const app = express(); app.use(express.json()); app.post('/greet', (req, res) => { const name = req.body.name || 'Guest'; res.send(`Hello, ${name}!`); }); app.listen(3000, () => { console.log('Server running on http://localhost:3000'); });
Always use middleware like express.json() to read JSON data from req.body.
Check if the data exists in req before using it to avoid errors.
Understanding req helps you make your app respond to what users send.
req holds all info sent by the user to your server.
You use req.params, req.query, and req.body to get different parts of the request.
Knowing how to use req helps your app understand and respond to users correctly.
Practice
req object represent?Solution
Step 1: Understand the role of
Thereqin Expressreqobject contains all the information sent by the user to the server, such as URL parameters, query strings, and request body.Step 2: Differentiate
The server's response is handled byreqfrom other objectsres, notreq. Database connections and middleware are separate concepts.Final Answer:
Information sent by the user to the server -> Option AQuick Check:
req= user info [OK]
- Confusing req with res (response)
- Thinking req is a database connection
- Mixing req with middleware functions
Solution
Step 1: Recall how Express stores URL parameters
Express stores URL parameters inreq.params, which holds key-value pairs from the route.Step 2: Check other options for correctness
req.bodyholds POST data,req.queryholds query strings, andreq.urlis a string, not an object with params.Final Answer:
req.params -> Option BQuick Check:
URL params =req.params[OK]
- Using req.body to get URL params
- Confusing query strings with URL params
- Trying to access params from req.url string
app.get('/user/:id', (req, res) => {
console.log(req.query.name);
res.send('Done');
});
// Request URL: /user/123?name=AliceSolution
Step 1: Identify what
req.query.nameaccessesreq.queryholds query string parameters from the URL, soreq.query.namegets the value of the 'name' query parameter.Step 2: Match the request URL query
The URL has?name=Alice, soreq.query.nameis 'Alice'.Final Answer:
Alice -> Option CQuick Check:
Query param 'name' = Alice [OK]
- Confusing req.params with req.query
- Expecting URL param instead of query param
- Assuming req.query is undefined if not in route
app.post('/submit', (req, res) => {
const data = req.query.body;
res.send(data);
});Solution
Step 1: Check how POST data is accessed
POST data is sent in the request body and accessed viareq.body, notreq.query.Step 2: Identify the mistake in the code
The code incorrectly tries to get POST data fromreq.query.body, which is wrong; it should bereq.body.Final Answer:
Using req.query instead of req.body to access POST data -> Option AQuick Check:
POST data =req.body, notreq.query[OK]
- Accessing POST data from req.query
- Forgetting to use body-parser middleware
- Confusing HTTP methods and data locations
type and a query parameter sort. Which code correctly accesses both parameters?Solution
Step 1: Identify where URL and query parameters are stored
URL parameters liketypeare inreq.params, and query parameters likesortare inreq.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 usesreq.params.typeandreq.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 usesreq.bodywhich is for POST data.Final Answer:
req.params.type and req.query.sort -> Option DQuick Check:
URL param = req.params, query param = req.query [OK]
- Swapping req.params and req.query
- Missing URL param in route path
- Using req.body for GET parameters
Ready to prove it?
Pass the test and this pattern moves unknown
