尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

详细介绍:Axios 全面详解

详细介绍:Axios 全面详解
📅 发布时间:2026/6/20 20:57:54

一、Axios 是什么?

Axios 是一个轻量级的 HTTP 请求库,用来发送网络请求(GET、POST、PUT、DELETE 等),底层基于:

  • 浏览器环境: 使用 XMLHttpRequest

  • Node.js 环境: 使用 http 模块

相比原生的 fetch() 或 XMLHttpRequest:

  • 语法更简洁

  • 支持请求/响应拦截

  • 支持自动 JSON 转换

  • 支持请求取消

  • 支持并发控制

  • 兼容旧浏览器


⚙️ 二、安装与引入

# npm 安装
npm install axios
# yarn 安装
yarn add axios

在前端项目中使用:

import axios from 'axios';

在 Node.js 中也可以直接使用:

const axios = require('axios');

三、基础用法

1️⃣ GET 请求

axios.get('https://api.example.com/users', {params: { id: 123 }  // ?id=123
})
.then(response => {console.log(response.data);
})
.catch(error => {console.error(error);
});

2️⃣ POST 请求

axios.post('https://api.example.com/login', {username: 'admin',password: '123456'
})
.then(res => console.log(res.data))
.catch(err => console.error(err));

3️⃣ 并发请求

axios.all([axios.get('/user'),axios.get('/comments')
]).then(axios.spread((user, comments) => {console.log(user.data, comments.data);
}));

四、常见配置项(axios config)

Axios 的第二个参数可以传一个配置对象:

axios({method: 'post',url: '/user/12345',data: { name: 'Tom' },headers: { 'Authorization': 'Bearer token' },timeout: 5000,responseType: 'json',  // 支持 arraybuffer, blob, document, json, text, stream
});

常用配置项说明:

配置项说明
url请求地址
method请求方法(get、post、put、delete 等)
baseURL设置统一的基础路径
headers自定义请求头
paramsURL 查询参数(GET 参数)
data请求体数据(POST 数据)
timeout超时时间(毫秒)
responseType响应数据类型
auth基础认证 {username, password}
withCredentials是否跨域时携带 cookie

五、拦截器机制(Interceptor)

Axios 提供了两类拦截器:请求拦截器 与 响应拦截器。

1️⃣ 请求拦截器

可以在请求发出前做统一处理,比如添加 Token。

axios.interceptors.request.use(config => {const token = localStorage.getItem('token');if (token) config.headers.Authorization = `Bearer ${token}`;return config;},error => Promise.reject(error)
);

2️⃣ 响应拦截器

可以统一处理返回结果或错误。

axios.interceptors.response.use(response => {// 返回数据前的处理return response.data;},error => {if (error.response && error.response.status === 401) {console.log('未授权,请重新登录');}return Promise.reject(error);}
);

六、创建 Axios 实例(常用于项目封装)

const service = axios.create({baseURL: 'https://api.example.com/',timeout: 8000
});
service.interceptors.request.use(config => {// 统一添加 tokenconfig.headers.Authorization = 'Bearer ' + localStorage.getItem('token');return config;
});
service.interceptors.response.use(res => res.data);
export default service;

使用时:

import service from './request';
service.get('/user').then(data => console.log(data));

七、错误处理

Axios 会在请求失败时返回一个 error 对象,可通过以下方式判断:

axios.get('/api').catch(error => {if (error.response) {console.log('服务器返回错误状态码:', error.response.status);} else if (error.request) {console.log('请求已发送但未收到响应');} else {console.log('请求设置错误:', error.message);}});

⚡ 八、取消请求

通过 AbortController(或旧版的 CancelToken)可以中止请求。

const controller = new AbortController();
axios.get('/long-request', { signal: controller.signal }).catch(e => console.log('请求被取消'));
controller.abort();  // 主动取消请求

九、Axios 原理简析

Axios 的核心机制:

  1. 创建实例(axios.create)

    • 实际是创建一个带有默认配置的 Axios 对象。

  2. 请求调度器(dispatchRequest)

    • 判断当前环境(浏览器 or Node)

    • 分别使用 XMLHttpRequest 或 http.request() 发送请求

  3. 拦截器链(InterceptorManager)

    • 请求拦截器 → 发请求 → 响应拦截器

    • 内部通过 Promise 链式调用 实现拦截与传递。

请求链路:
request interceptors → dispatch request → response interceptors

十、常见高级技巧

功能示例
设置全局默认配置axios.defaults.baseURL = '/api'
设置全局 headersaxios.defaults.headers.common['Authorization'] = token
文件上传axios.post('/upload', formData, { headers: {'Content-Type': 'multipart/form-data'} })
文件下载axios.get('/file', { responseType: 'blob' })
超时重试配合 axios-retry 插件
并发控制用 Promise.all 或队列机制管理

十一、与 Fetch 的区别

特性AxiosFetch
兼容性IE11 可用IE 不支持
超时控制支持需手动实现
拦截器有无
自动 JSON 转换有需手动调用 .json()
取消请求内置支持需 AbortController
上传/下载进度支持较麻烦

✅ 十二、小结

优点缺点
API 简洁体积比 fetch 略大
支持拦截器某些错误类型不易捕获
支持并发与取消不支持流式响应
支持浏览器 + Node—

相关新闻

  • MGR-单主模式搭建-实操篇 - Me
  • 2025年卡尔费休试剂直销厂家权威推荐榜单:费休氏试剂/卡尔菲休试剂/卡尔费休源头厂家精选 - 品牌推荐官
  • 2025年五大水产礼盒推荐厂商排行榜,新测评精选水产礼盒资深 - 工业品牌热点

最新新闻

  • 2026年6月核心快讯:从南京欧米茄正规授权维保资质查询到上海认证技师服务 - 亨得利官方售后
  • 太原单位搬家|太原公司搬迁专业服务商,福康搬家高分优选 - 速递信息
  • 太原长途搬家哪家专业?太原福康搬家省内长短途货运靠谱 - 速递信息
  • 2026EMBA排名测评:高管科学择校选型指南 - 品牌2026推荐
  • 【机翻】关于 ETW 内部结构:架构、钩子、篡改和检测(About ETW Internals: Architecture, Hooking, Tampering, and Detection )
  • BlenderGIS三维地理数据可视化:5分钟快速上手指南

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号