快速上手Axios:前端开发者必备技能

一、什么是Axios?

Axios是一个简单的HTTP客户端,通过它可以轻松发送异步请求。它在捕获响应数据、错误处理、请求拦截、取消请求等方面简化了许多复杂的细节。

二、安装Axios

1. 使用npm或yarn安装

bash 复制代码
# 使用npm
npm install axios

# 使用yarn
yarn add axios

三、发送你的第一次请求

1. 发起GET请求

javascript 复制代码
// GET请求的基本形式
const axios = require('axios');

axios.get('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => {
        console.log('数据获取成功:', response.data);
    })
    .catch(error => {
        console.error('请求失败:', error);
    });

2. 发起POST请求

javascript 复制代码
// 使用POST请求发送数据
const axios = require('axios');

axios.post('https://jsonplaceholder.typicode.com/posts', {
    title: 'Axios入门',
    body: '学习如何使用Axios',
    userId: 1
})
    .then(response => {
        console.log('数据提交成功:', response.data);
    })
    .catch(error => {
        console.error('提交失败:', error);
    });

四、请求配置

Axios允许进行多种配置,以满足不同请求的需求。

javascript 复制代码
// 发送具有配置的请求
const axios = require('axios');

axios({
    method: 'get',
    url: 'https://jsonplaceholder.typicode.com/posts',
    params: { userId: 1 }, // 查询参数
    timeout: 5000, // 请求超时设置为5秒
    headers: { 'X-Custom-Header': 'foobar' } // 设置请求头
})
    .then(response => {
        console.log('配置请求成功:', response.data);
    });

五、拦截器的使用

Axios提供了拦截器功能,能在请求或响应被then或catch处理前拦截它们,进行统一的操作。

1. 请求拦截器

javascript 复制代码
const axios = require('axios');

axios.interceptors.request.use(config => {
    // 在请求被发送之前做处理
    config.headers.Authorization = 'Bearer YOUR_TOKEN_HERE';
    console.log('请求拦截成功:', config);
    return config;
}, error => {
    return Promise.reject(error);
});

axios.get('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => {
        console.log('数据获取成功:', response.data);
    })
    .catch(error => {
        console.error('请求失败:', error);
    });

2. 响应拦截器

javascript 复制代码
const axios = require('axios');

axios.interceptors.response.use(response => {
    // 对响应数据进行处理
    console.log('响应拦截成功:', response);
    return response;
}, error => {
    // 对响应错误进行处理
    console.error('响应错误:', error.response);
    return Promise.reject(error);
});

axios.get('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => {
        console.log('数据获取成功:', response.data);
    })
    .catch(error => {
        console.error('请求失败:', error);
    });

六、并发请求处理

通过axios.all可以同时发送多个请求,并在所有请求都完成后执行某个回调函数。

javascript 复制代码
const axios = require('axios');
const requestOne = axios.get('https://jsonplaceholder.typicode.com/posts');
const requestTwo = axios.get('https://jsonplaceholder.typicode.com/users');

axios.all([requestOne, requestTwo])
    .then(axios.spread((posts, users) => {
        console.log('POST数据:', posts.data);
        console.log('USER数据:', users.data);
    }));

七、取消请求

javascript 复制代码
const axios = require('axios');
const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('https://jsonplaceholder.typicode.com/posts', {
    cancelToken: source.token
})
    .catch(thrown => {
        if (axios.isCancel(thrown)) {
            console.log('请求已被取消:', thrown.message);
        }
    });

// 取消请求时
source.cancel('用户手动取消请求');

结语

如果你喜欢本教程,记得点赞+收藏!关注我获取更多JavaScript开发干货。

相关推荐
ZC跨境爬虫7 小时前
跟着 MDN 学 HTML day_9:(信件语义标记)
前端·css·笔记·ui·html
前端老石人7 小时前
HTML 字符引用完全指南
开发语言·前端·html
matlab_xiaowang7 小时前
Redux 入门:JavaScript 可预测状态管理库
开发语言·javascript·其他·ecmascript
幼儿园技术家7 小时前
前端如何设计权限系统(RBAC / ABAC)?
前端
前端摸鱼匠9 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker9 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
donecoding11 小时前
一个 sudo 引发的血案:npm 全局包权限错乱彻底修复
前端·node.js·前端工程化
风骏时光牛马11 小时前
Raku正则匹配与数据批量处理实操案例
前端
nbwenren11 小时前
2026实测:Gemini 3 镜像站视觉能力实践——拍照原型图,一键生成 HTML+CSS 代码
前端·css·html
Lee川11 小时前
Prisma 实战指南:像搭积木一样设计古诗词数据库
前端·数据库·后端