Back

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

如何在 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 是同构的,可以在两种环境中运行。

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