12k
All articles

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

通过实用代码示例,演示如何在 Node.js 中使用 Axios 发送 GET 和 POST 请求,处理结构化响应并进行错误管理。

OpenReplay Team
OpenReplay Team
如何在 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:

  1. 初始化项目(如果尚未初始化):

    npm init -y
    
  2. 安装 Axios:

    npm install axios
    
  3. 在应用程序中引入 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
  • 使用 awaitaxios.post(),传递端点和数据对象。
  • 记录新创建的帖子。
  • 正确处理错误。

处理响应和错误

Axios 提供了一种结构化的方式来处理响应和错误。响应对象包括 datastatusheaders 等属性。

以下是处理不同类型错误的方法:

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 可以同时在 Node.js 和浏览器环境中使用吗?

是的,Axios 是同构的,可以在两种环境中运行。

Axios 如何处理 JSON 数据?

Axios 会自动转换请求和响应的 JSON 数据,无需手动解析。

是否可以使用 Axios 设置自定义请求头?

是的,您可以在请求配置中传递一个 `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

We use cookies to improve your experience. By using our site, you accept cookies.