使用Axios的Node.js网络请求
在现代技术世界中,很少能找到独立的应用程序。大多数应用程序都依赖于其他应用程序的资源。这些资源是通过使用API来实现的。服务器也不例外。尽管服务器存储自己的相关数据,但有时也需要来自其他服务器的数据。为了访问这些数据,服务器需要一种方法来与所依赖的服务器的API进行通信。这就是Axios的作用。
简介
Axios是一个非常流行的JavaScript框架,用于执行网络请求。Axios在浏览器和Node.js运行时都能工作。Axios是基于承诺的,但也允许使用现代的async/await方法。本文将介绍Axios以及如何使用它在Node.js中进行网络请求。
前提条件
要学习这篇文章,你需要安装Node.js,并了解一些基础知识,如如何建立一个简单的服务器并对其进行配置。
通过这篇文章,我们将从我们的Node.js应用程序向一个免费的JSON占位符API发出网络请求。我们的应用程序将发回它从API收到的响应。
让我们开始吧!
设置我们的服务器
首先创建一个新的Node.js项目。用你选择的名字创建一个文件夹,并从终端运行以下命令。
npm init
npm i express axios
npm init 初始化一个新的node.js应用程序,而第二个命令则是安装 和 。express axios
完成这些后,让我们继续创建我们的服务器。
创建一个index.js文件,并在其中写入以下代码。
const express = require("express");
const app = express();
const axios = require("axios").create({baseUrl: "https://jsonplaceholder.typicode.com/"});
app.listen(2400, () => {
console.log("Server started at port 2400");
});
在这里,我们导入所需的依赖项,即Express和axios。在axios的导入中,我们使用create方法来指定基本URL,这是我们的axios对象将预置到我们所有请求中的URL。
使用这个命令运行服务器。
node index
现在我们的服务器已经启动并运行了,让我们看看什么是网络请求以及axios允许我们做什么。
开始使用axios
我们已经提到了网络请求,但我们还没有说这是什么。顾名思义,网络请求是通过互联网从客户端向服务器发送的请求。在这种情况下,客户端也可以是另一个服务器。Axios允许我们从浏览器和Node.js应用程序中进行HTTP 。它允许我们进行GET 和POST 请求,这是最常用的HTTP 方法。
让我们来看看我们如何进行这些类型的请求。
GET请求
所有的axios请求都是使用我们在第一个代码片断中导入的axios对象创建的。axios对象需要一个对象参数。该对象包含请求的URL和与请求相关的HTTP方法。
在app.listen 方法之前添加以下代码。
app.get("/async", async (req, res) => {
try {
const response = await axios({
url: "users",
method: "get",
});
res.status(200).json(response.data);
} catch (err) {
res.status(500).json({ message: err });
}
});
在上面的代码中,我们做了一个端点,向JSON占位符API发出了GET 的请求。然后端点返回它从服务器上收到的响应。axios对象返回一个承诺,但我们能够使用async/await方法,这使得我们的代码看起来有顺序。然而,你仍然可以使用承诺库。这就是代码的模样。
app.get("/promise", (req, res) => {
axios({
url: "users",
method: "get",
})
.then(response => {
res.status(200).json(response.data);
})
.catch((err) => {
res.status(500).json({ message: err });
});
});
使用Postman测试这两个端点,并观察其输出。
另外,你可以不写URL和方法,而是直接从对象中调用方法,只需传入URL。
例子。
axios.get("users")
POST请求
对于POST请求,axios对象需要输入URL、方法和POST的主体。
要进行POST请求,你只需从axios对象中调用POST方法,并传入要发布的内容。
下面是一个使用async/await方法的代码例子。
app.post("/async/post/", async (req, res) => {
try {
const response = await axios.post("posts", {
title: "Foo",
body: "bar",
userID: 1
});
res.status(200).json(response);
} catch (err) {
res.status(500).json({ message: err });
}
});
当使用承诺时,代码将如下所示。
app.get("/promise/post", (req, res) => {
axios.post("posts", {
title: "Foo",
body: "bar",
userID: 1
})
.then(response => {
res.status(200).json(response.data);
})
.catch((err) => {
res.status(500).json({ message: err });
});
});
结语
至此,我们的教程就结束了。在这篇文章中,我们已经了解了什么是axios,以及如何使用它从Node.js进行GET和POST请求。Axios还提供了其他的HTTP请求,如PUT和PATH,但它们不是很流行,不过,它们使用的语法与我们刚才说的两种方法相同。希望这能帮助你开始使用axios。