如何在 Node.js 中使用 Axios(附代码示例)

Axios 是一个基于 promise 的 HTTP 客户端,可简化在 Node.js 中发出 HTTP 请求的过程。它简化了发送 GET 和 POST 请求、处理响应以及管理错误等任务。在本指南中,我们将通过实际的代码示例探讨如何在 Node.js 中使用 Axios。
关键要点
- Axios 提供了一个简单的 API 用于在 Node.js 中发出 HTTP 请求。
- 它利用 promise 来实现更简洁的异步代码。
- 提供了直观的机制来处理各种错误场景。
在 Node.js 中设置 Axios
要在 Node.js 项目中开始使用 Axios:
-
初始化项目(如果尚未初始化):
npm init -y
-
安装 Axios:
npm install axios
-
在应用程序中引入 Axios:
const axios = require('axios');
发送 GET 请求
GET 请求用于从指定的端点检索数据。以下是使用 Axios 执行 GET 请求的方法:
const axios = require('axios');
async function fetchData() {
try {
const response = await axios.get('https://jsonplaceholder.typicode.com/posts/1');
console.log(response.data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchData();
说明:
- 定义一个异步函数
fetchData
。 - 使用
await
发出一个 Axios GET 请求。 - 将响应数据记录到控制台。
- 使用
try...catch
处理错误。
发送 POST 请求
POST 请求用于将数据发送到服务器以创建新资源。以下是执行 POST 请求的方法:
const axios = require('axios');
async function createPost() {
try {
const response = await axios.post('https://jsonplaceholder.typicode.com/posts', {
title: 'New Post',
body: 'This is the content of the new post.',
userId: 1,
});
console.log('Post created:', response.data);
} catch (error) {
console.error('Error creating post:', error);
}
}
createPost();
说明:
- 定义一个异步函数
createPost
。 - 使用
await
和axios.post()
,传递端点和数据对象。 - 记录新创建的帖子。
- 正确处理错误。
处理响应和错误
Axios 提供了一种结构化的方式来处理响应和错误。响应对象包括 data
、status
和 headers
等属性。
以下是处理不同类型错误的方法:
const axios = require('axios');
async function fetchData() {
try {
const response = await axios.get('https://jsonplaceholder.typicode.com/posts/1');
console.log('Data:', response.data);
console.log('Status:', response.status);
} catch (error) {
if (error.response) {
// 服务器响应了一个 2xx 范围之外的状态码
console.error('Error data:', error.response.data);
console.error('Error status:', error.response.status);
} else if (error.request) {
// 未收到响应
console.error('No response received:', error.request);
} else {
// 设置请求时出错
console.error('Error:', error.message);
}
}
}
fetchData();
说明:
- 成功时记录响应数据和状态。
- 区分以下情况:
- 有响应的错误(
error.response
) - 没有响应的错误(
error.request
) - 其他与 Axios 相关的错误(
error.message
)
- 有响应的错误(
常见问题
是的,Axios 是同构的,可以在两种环境中运行。
Axios 会自动转换请求和响应的 JSON 数据,无需手动解析。
是的,您可以在请求配置中传递一个 `headers` 对象来设置自定义请求头。
结论
Axios 简化了 Node.js 中的 HTTP 请求,提供了一个简洁明了的 API。它对 promise 的支持允许高效地处理异步操作。通过了解如何执行 GET 和 POST 请求以及处理响应和错误,您可以有效地将 Axios 集成到 Node.js 应用程序中。
Listen to your bugs 🧘, with OpenReplay
See how users use your app and resolve issues fast. Loved by thousands of developers