📜  如何使用 Node.js 创建不同的发布请求?

📅  最后修改于: 2022-05-13 01:56:34.898000             🧑  作者: Mango

如何使用 Node.js 创建不同的发布请求?

POST 请求是所有 HTTP 请求中的重要请求之一。此请求用于将数据存储在 WebServer上。例如,文件上传是发布请求的常见示例。在 Node.js 中执行 HTTP POST 请求有很多方法。各种开源库也可用于执行任何类型的 HTTP 请求。

下面讨论了三种创建不同发布请求的方法。

  1. 使用针模块
  2. 使用公理模块
  3. 使用 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

控制台输出: