How to Get POST Data in Node ?
Handling POST data is a fundamental aspect of developing web applications and APIs using Node.js. POST requests are used when a client needs to send data to the server, such as submitting form data, uploading files, or sending JSON payloads. This article will cover various methods to retrieve and handle POST data in Node.js, enhancing your server-side capabilities.
Introduction to POST Requests
POST requests are a type of HTTP request used to send data to the server to create or update resources. Unlike GET requests, which append data to the URL, POST requests include data in the request body, making them suitable for sending large amounts of data or sensitive information.
Steps to Create the Application
Step 1: Now, initialize a new Node.js project with default configurations using the following command on the command line.
npm init -y
Step 2: Now install Express inside your project using the following command on the command line.
npm install express
Project Structure:
Table of Content
- Using the http Module
- Using the querystring Module
- Using Express
Using the http Module
You can handle POST data by creating an HTTP server using Node.js’s built-in http
module. Here’s a basic example of how to parse POST data.
const http = require('http');
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
let data = '';
req.on('data', chunk => {
data += chunk.toString();
});
req.on('end', () => {
console.log('POST data:', data);
res.end('Data received');
});
} else {
res.end('Send a POST request to this endpoint');
}
});
server.listen(3000, () => {
console.log('Server running on port 3000');
});
Using the querystring Module
If the POST data is in URL-encoded format, you can use the querystring
module to parse it.
const http = require('http');
const querystring = require('querystring');
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
let data = '';
req.on('data', chunk => {
data += chunk.toString();
});
req.on('end', () => {
const postData = querystring.parse(data);
console.log('POST data:', postData);
res.end('Data received');
});
} else {
res.end('Send a POST request to this endpoint');
}
});
server.listen(3000, () => {
console.log('Server running on port 3000');
});
Using Express
Express.js simplifies the process of handling HTTP requests, including POST requests. Let’s dive into a practical example of handling POST data with Express.js:
Approach
- The
index.html
file includes a form with two inputs for username and password. - When the form is submitted, a POST request is sent to the home route (“/”) of the server.
- The request body contains the username and password, and the header includes an authorization token.
- The server handles the POST request using the
app.post()
method. - The server responds by sending back the username, password, and authorization token.
- These details are printed to the console for further examination.
Example: Implementation to show how to get POST data in nodejs.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>POST DEMO</title>
</head>
<body>
<form>
<div>
<label>Username</label>
<input type="text" id="user" />
</div>
<div>
<label>Password</label>
<input type="password"
id="pass" />
</div>
<button type="submit">
Submit
</button>
</form>
<script>
document.querySelector('button')
.addEventListener('click', (e) => {
e.preventDefault();
const username = document
.querySelector('#user').value;
const password = document
.querySelector('#pass').value;
fetch('/', {
method: 'POST',
headers: {
Authorization: 'Bearer abcdxyz',
'Content-Type': 'application/json',
},
body: JSON.stringify({
username,
password,
}),
})
.then((res) => {
return res.json();
})
.then((data) => console.log(data));
});
</script>
</body>
</html>
// Importing express module
const express = require('express');
const app = express();
app.use(express.json());
app.get('/',
(req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.post('/',
(req, res) => {
const { username, password } = req.body;
const { authorization } = req.headers;
res.send(
{
username,
password,
authorization,
});
});
app.listen(3000,
() => {
console.log(
'Our express server is up on port 3000'
);
});
Steps to run the Application
node app.js
Output: Open the browser and go to http://localhost:3000 and you will see the following output.
Conclusion
Handling POST data in Node.js is a crucial aspect of building server-side applications. Whether you’re using built-in modules, middleware, or third-party libraries, understanding how to retrieve and process POST data is essential for building robust and scalable web applications. Choose the method that best fits your project’s requirements and development preferences to efficiently handle POST requests in Node.js.