如何在 Node.js 中进行 HTTP 请求?
原文:https://www . geesforgeks . org/how-to-make-http-requests-in-node-js/
在 REST API 的世界里,发出 HTTP 请求是现代技术的核心功能。许多开发人员在到达一个新环境时就学会了。包括*【HTTPS】模块在内的各种开源库都可以用来从 NodeJS 发出网络请求。*
有许多方法可以创建不同类型的网络请求。在这里,我们将讨论 4 种不同的方法。
- 使用 AXIOS 模块
- 使用 超级代理****
- 使用 节点-获取 模块
- 使用 HTTP 模块
在这里,我们将请求发送到 https://jsonplaceholder.typicode.com/ API,并显示响应的数据。这是我们所有的 REST APIs。
| **方法** | **REST API** | **详细信息** | | 得到 | /员额 | 列出所有资源 | | 得到 | /帖子/ | 获取资源 | | 邮政 | /员额 | 创建资源 | | 放 | /帖子/ | 更新资源 |*设置新项目:*要创建新项目,请在终端中输入以下命令。
mkdir test
npm init -y
*项目结构:*如下图。
**
项目目录**
*方法 1:* 在这种方法中,我们将使用 AXIOS 库发送获取资源的请求。Axios 是 NodeJS 的一个基于承诺的 HTTP 客户端。你,也可以在浏览器中使用它。在处理像网络请求这样的异步代码时,使用 promise 是一个很大的优势。
*安装模块:*
npm i axios
创建 index.js 并写下以下代码。
index.js
const axios = require('axios')
// Make request
axios.get('https://jsonplaceholder.typicode.com/posts/1')
// Show response data
.then(res => console.log(res.data))
.catch(err => console.log(err))
*运行应用程序的步骤:*打开终端,写下以下命令。
node index.js
输出:
**
axios 请求响应**
*方法 2 :* 这里我们将请求使用超级代理库创建资源。这是另一个在浏览器中进行网络请求的流行库,但也适用于 Node.js。
*安装模块:*
npm i superagent
用以下代码重写 index.js 。
index.js
const superagent = require('superagent');
// promise with async/await
(async () => {
// Data to be sent
const data = {
title: 'foo',
body: 'bar',
userId: 1,
}
try {
// Make request
const {body} = await superagent.post(
'https://jsonplaceholder.typicode.com/posts')
.send(data)
// Show response data
console.log(body)
} catch (err) {
console.error(err)
}
})();
*运行应用程序的步骤:*打开终端,写下以下命令。
node index.js
*输出:*
**
超级代理请求响应**
*方法 3 :* 这里我们将发送一个使用节点获取库更新资源的请求。如果你已经在浏览器中使用获取,那么它可能是你的 NodeJS 服务器的好选择。
*安装模块:*
npm i node-fetch
用以下代码重写 index.js 。
index.js
const fetch = require('node-fetch');
// Propmise then/catch block
// Make request
fetch('https://jsonplaceholder.typicode.com/posts/1', {
method: 'PUT',
body: JSON.stringify({
id: 1,
title: 'fun',
body: 'bar',
userId: 1,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
},
})
// Parse JSON data
.then((response) => response.json())
// Showing response
.then((json) => console.log(json))
.catch(err => console.log(err))
*运行应用程序的步骤:*打开终端,写下以下命令。
node index.js
*输出:*
**
节点提取请求响应**
*方法 4 :* 这里我们将使用 HTTP 模块发送获取所有资源的请求。NodeJS 内置 HTTP 模块进行网络请求。但缺点是,它不像其他解决方案那样太用户友好。你,需要在收到后手动解析数据。
*安装模块:*是内置模块,不需要安装。即插即用。
用以下代码重写 index.js 。
index.js
// Importing https module
const http = require('http');
// Setting the configuration for
// the request
const options = {
hostname: 'jsonplaceholder.typicode.com',
path: '/posts',
method: 'GET'
};
// Sending the request
const req = http.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)
}).end()
*运行应用程序的步骤:*打开终端,写下以下命令。
node index.js
*输出:*
**
http 请求响应**
*结论:*我个人选择的是 Axios,但是 npm 上还有一些其他流行的库,看一下:
版权属于:月萌API www.moonapi.com,转载请注明出处