Handling requests and responses
Handling requests and responses in Node.js typically involves using the built-in http module or a more feature-rich framework like Express.js. I'll explain both approaches.
1. Using the http Module
The http module is a core module in Node.js that allows you to create a server to handle HTTP requests and send responses.
Example:
const http = require('http');
// Create an HTTP server
const server = http.createServer((req, res) => {
// Handle incoming requests and send responses
// Log the request method and URL
console.log(`Received ${req.method} request for: ${req.url}`);
// Set the content type to text/html
res.setHeader('Content-Type', 'text/html');
// Send a response back to the client
res.statusCode = 200; // Set status code
res.end('<h1>Hello, World!</h1>'); // Send a response body
});
// Start the server on port 3000
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
Explanation:
http.createServer(): Creates a new HTTP server.
req: Represents the incoming request, containing details like the URL, HTTP method, headers, etc.
res: Represents the outgoing response, allowing you to set headers, status codes, and send data back to the client.
res.end(): Ends the response, and sends the data to the client.
2. Using Express.js
Express.js is a popular web framework for Node.js that simplifies handling requests and responses.
Installation:
First, you need to install Express.js using npm:
npm install express
Example:
const express = require('express');
const app = express();
// Handle GET request to the root URL
app.get('/', (req, res) => {
// Log the request method and URL
console.log(`Received ${req.method} request for: ${req.url}`);
// Send a response back to the client
res.status(200).send('<h1>Hello, World with Express!</h1>');
});
// Start the server on port 3000
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
Explanation:
app.get(): Handles GET requests to the specified path ('/' in this case).
req: The request object, similar to the one in the http module.
res: The response object, with convenient methods like res.send() to send data to the client.
app.listen(): Starts the server and listens on the specified port.
Key Differences:
http module: More manual control, but requires more code to handle common tasks like routing, parsing request bodies, etc.
- Express.js: Provides a higher-level abstraction, making it easier to build web applications with less boilerplate code.
Which method do you prefer, or would you like more details on a specific aspect?