Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Explore Request Object Properties in Node.js
📖 Scenario: You are building a simple Node.js server that listens to HTTP requests. You want to learn how to access different properties of the request object to understand what the client is sending.
🎯 Goal: Create a Node.js HTTP server that reads and logs specific properties from the request object: the HTTP method, the URL, and the headers.
📋 What You'll Learn
Create a basic HTTP server using Node.js http module
Access the method property of the request object
Access the url property of the request object
Access the headers property of the request object
💡 Why This Matters
🌍 Real World
Web servers need to read request properties to understand what the client wants and respond correctly.
💼 Career
Knowing how to access request properties is essential for backend developers working with Node.js to build APIs and web applications.
Progress0 / 4 steps
1
Set up a basic HTTP server
Create a Node.js HTTP server using http.createServer and assign it to a variable called server. The server should have a callback function with parameters req and res. Do not add any logic inside the callback yet.
Node.js
Hint
Use http.createServer with a function that takes req and res as parameters.
2
Add a port number variable
Create a constant variable called port and set it to 3000. This will be the port your server listens on.
Node.js
Hint
Use const port = 3000; to define the port number.
3
Access and store request properties
Inside the server callback, create three constants: method assigned to req.method, url assigned to req.url, and headers assigned to req.headers.
Node.js
Hint
Use const method = req.method; and similarly for url and headers.
4
Start the server listening on the port
Add a line to make the server listen on the port variable using server.listen(port).
Node.js
Hint
Use server.listen(port); to start the server.
Practice
(1/5)
1. Which property of the Node.js request object contains the HTTP method used by the client, such as GET or POST?
easy
A. req.method
B. req.url
C. req.headers
D. req.body
Solution
Step 1: Understand the request object properties
The request object has properties like method, url, headers, and body that describe the client's request.
Step 2: Identify the property for HTTP method
The HTTP method (GET, POST, etc.) is stored in req.method.
Final Answer:
req.method -> Option A
Quick Check:
HTTP method = req.method [OK]
Hint: HTTP method is always in req.method [OK]
Common Mistakes:
Confusing req.url with HTTP method
Using req.body to get method
Trying to find method in req.headers
2. Which of the following is the correct way to access the URL path from the request object in Node.js?
easy
A. req.route
B. req.path
C. req.url
D. req.address
Solution
Step 1: Recall the property for URL path
The request object stores the full URL path in req.url.
Step 2: Verify other options
req.path is not standard in Node.js core, req.route is used in some frameworks but not for URL path, and req.address is invalid.
If a client sends a request with header Content-Type: application/json, what will be the output?
medium
A. application/json
B. content-type
C. undefined
D. Error
Solution
Step 1: Understand how headers are accessed
Headers in Node.js request object are stored in lowercase keys inside req.headers. So content-type is the correct key.
Step 2: Check the code output
The code returns req.headers['content-type'], which matches the header sent by the client: application/json.
Final Answer:
application/json -> Option A
Quick Check:
Header content-type value = application/json [OK]
Hint: Headers keys are lowercase in req.headers [OK]
Common Mistakes:
Using 'Content-Type' instead of 'content-type' key
Expecting req.headers to be case-sensitive
Assuming undefined if header not found
4. What is wrong with this Node.js code snippet that tries to read JSON data from the request body?
const http = require('http');
const server = http.createServer((req, res) => {
const data = req.body;
res.end(data);
});
server.listen(3000);
medium
A. res.end cannot send data
B. req.body is undefined without parsing the data
C. req.body is a function, not a property
D. Missing require for http module
Solution
Step 1: Understand how request body works in Node.js
In Node.js core, req.body is not automatically populated. You must collect data chunks and parse them manually or use middleware.
Step 2: Identify the error in the code
The code tries to access req.body directly, which will be undefined, causing the response to send undefined.
Final Answer:
req.body is undefined without parsing the data -> Option B
Quick Check:
req.body needs manual parsing [OK]
Hint: req.body is empty unless parsed manually or with middleware [OK]
Common Mistakes:
Assuming req.body is auto-filled in Node.js core
Trying to send undefined data without error
Confusing res.end usage
5. You want to log the client's IP address and the requested URL path in a Node.js HTTP server. Which code snippet correctly accesses these properties from the request object?
hard
A. console.log(req.connection.remoteAddress, req.path);
B. console.log(req.ip, req.path);
C. console.log(req.address, req.route);
D. console.log(req.socket.remoteAddress, req.url);
Solution
Step 1: Identify how to get client IP in Node.js
The client IP is accessible via req.socket.remoteAddress or req.connection.remoteAddress. The req.socket is the modern standard.
Step 2: Identify how to get URL path
The URL path is stored in req.url. Other options like req.path or req.route are not standard in Node.js core.
Step 3: Compare options
console.log(req.socket.remoteAddress, req.url); uses req.socket.remoteAddress and req.url, which is correct and modern.
Final Answer:
console.log(req.socket.remoteAddress, req.url); -> Option D
Quick Check:
IP = req.socket.remoteAddress, URL = req.url [OK]
Hint: Use req.socket.remoteAddress and req.url for IP and path [OK]
Common Mistakes:
Using req.ip which is Express-specific
Using req.path which is not in Node.js core
Trying to access req.address or req.route which don't exist