如何使用 Node.js 创建不同的发布请求?
POST 请求是所有 HTTP 请求中的重要请求之一。此请求用于将数据存储在 WebServer上。例如,文件上传是发布请求的常见示例。在 Node.js 中执行 HTTP POST 请求有很多方法。各种开源库也可用于执行任何类型的 HTTP 请求。
下面讨论了三种创建不同发布请求的方法。
- 使用针模块
- 使用公理模块
- 使用 https 模块
下面将详细讨论所有三种方法:
方法 1:在 Node.js 中发出 HTTP POST 请求的方法之一是使用Needle 库。 Needle 是一个 HTTP 客户端,用于在 Node.js 中发出 HTTP 请求、多部分表单数据(例如文件上传)、自动 XML 和 JSON 解析等。
项目结构:
安装模块:
npm install needle
索引.js
Javascript
//Importing needle module
const needle = require('needle');
// Data to be sent
const data = {
name: 'geeksforgeeks',
job: 'Content Writer',
topic:'Node.js'
};
// Making post request
needle('post', 'https://requires.in/api/usersdata',
data, {json: true})
.then((res) => {
// Printing the response after request
console.log('Body: ', res.body);
}).catch((err) => {
// Printing the err
console.error(err.Message);
}
);
Javascript
// Importing the axios module
const axios = require('axios');
// Data to be sent
const data = {
name: 'geeksforgeeks',
job: 'Content Writer',
topic: 'Node.js'
};
const addUser = async () => {
try {
// Making post request
const res = await axios.post(
'https://reqres.in/api/usersdata', data);
// Printing the response data
console.log('Body: ', res.data);
} catch (err) {
// Printing the error
console.error(err.Message);
}
};
Javascript
// Importing https module
const https = require('https');
// Converting data in JSON format
const data = JSON.stringify({
name: 'geeksforgeeks',
job: 'Content Writer',
topic:'Node.js'
});
// Setting the configuration for
// the request
const options = {
hostname: 'reqres.in',
path: '/api/users',
method: 'POST'
};
// Sending the request
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
// Ending the response
res.on('end', () => {
console.log('Body:', JSON.parse(data));
});
}).on("error", (err) => {
console.log("Error: ", err.message);
});
// Write data to request body
req.write(data);
req.end();
执行命令:
node index.js
控制台输出:
方法 2:另一个可以使用的库是Axios 。这是一个流行的 node.js 模块,用于执行 HTTP 请求并支持所有最新的浏览器。它还支持用于执行 POST 请求的 async/await 语法。
安装模块:
npm install axios
索引.js
Javascript
// Importing the axios module
const axios = require('axios');
// Data to be sent
const data = {
name: 'geeksforgeeks',
job: 'Content Writer',
topic: 'Node.js'
};
const addUser = async () => {
try {
// Making post request
const res = await axios.post(
'https://reqres.in/api/usersdata', data);
// Printing the response data
console.log('Body: ', res.data);
} catch (err) {
// Printing the error
console.error(err.Message);
}
};
执行命令:
node index.js
控制台输出:
方法 3:也可以使用 Node.js 内置的 HTTPS 模块执行 POST 请求。该模块用于以加密格式发送数据
索引.js
Javascript
// Importing https module
const https = require('https');
// Converting data in JSON format
const data = JSON.stringify({
name: 'geeksforgeeks',
job: 'Content Writer',
topic:'Node.js'
});
// Setting the configuration for
// the request
const options = {
hostname: 'reqres.in',
path: '/api/users',
method: 'POST'
};
// Sending the request
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
// Ending the response
res.on('end', () => {
console.log('Body:', JSON.parse(data));
});
}).on("error", (err) => {
console.log("Error: ", err.message);
});
// Write data to request body
req.write(data);
req.end();
执行命令:
node index.js
控制台输出: