Axios教程

栏目: Javascript 发布时间:2024-12-24

Axios 是一个基于 Promise 的 HTTP 客户端,适用于浏览器和 node.js。它提供了简单易用的 API,用于发送 HTTP 请求并处理响应。本文将带你从安装 Axios 开始,逐步了解其基本用法、配置选项以及如何处理错误。

1. 安装 Axios

首先,你需要安装 Axios。你可以使用 npm 或 yarn 来安装它。

使用 npm:

npm install axios

使用 yarn:

yarn add axios

2. 基本用法

安装完成后,你可以在你的 JavaScript 或 typescript 文件中引入 Axios,并开始发送 HTTP 请求。

发送 GET 请求:

const axios = require('axios');

axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error fetching data:', error);
  });

发送 POST 请求:

const axios = require('axios');

const data = {
  key1: 'value1',
  key2: 'value2'
};

axios.post('https://api.example.com/submit', data)
  .then(response => {
    console.log('Data submitted:', response.data);
  })
  .catch(error => {
    console.error('Error submitting data:', error);
  });

3. 配置 Axios 实例

你可以创建一个 Axios 实例,并为其配置默认设置,如 baseURL、超时时间、请求头等。

const axios = require('axios');

const instance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

instance.get('/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error fetching data:', error);
  });

4. 拦截器

Axios 提供了请求和响应拦截器,允许你在请求或响应被处理之前对其进行修改。

请求拦截器:

instance.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  console.log('Request Interceptor:', config);
  return config;
}, error => {
  // 对请求错误做些什么
  return Promise.reject(error);
});

响应拦截器:

instance.interceptors.response.use(response => {
  // 对响应数据做点什么
  console.log('Response Interceptor:', response);
  return response;
}, error => {
  // 对响应错误做点什么
  return Promise.reject(error);
});

5. 处理错误

Axios 提供了丰富的错误处理机制。你可以通过 .catch() 方法捕获并处理错误。

axios.get('https://api.example.com/nonexistent')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    if (error.response) {
      // 服务器返回了状态码,且状态码在 2xx 范围之外
      console.error('Server responded with a status code:', error.response.status);
      console.error('Response data:', error.response.data);
    } else if (error.request) {
      // 请求已发出,但没有收到响应
      console.error('No response received:', error.request);
    } else {
      // 其他错误(如设置请求时出错)
      console.error('Error setting up request:', error.message);
    }
  });

6. 取消请求

你可以使用 CancelToken 来取消请求。

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('https://api.example.com/data', {
  cancelToken: source.token
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
    // 处理错误
  }
});

// 取消请求(消息参数是可选的)
source.cancel('Operation canceled by the user.');

7. 并发请求

你可以使用 axios.all() 方法来处理并发请求。

const axios = require('axios');

const requestOne = axios.get('https://api.example.com/data1');
const requestTwo = axios.get('https://api.example.com/data2');

axios.all([requestOne, requestTwo])
  .then(axios.spread((responseOne, responseTwo) => {
    console.log('Response from first request:', responseOne.data);
    console.log('Response from second request:', responseTwo.data);
  }))
  .catch(errors => {
    console.error('Errors occurred:', errors);
  });

总结

Axios 是一个功能强大且易于使用的 HTTP 客户端,适用于各种场景。通过本文,你应该已经掌握了 Axios 的基本用法、配置选项、错误处理以及并发请求的处理方法。

本文地址:https://www.tides.cn/p_js-axios-tutorial