前端学习教程-Axios

news/2025/10/4 22:14:45/文章来源:https://www.cnblogs.com/smalldong/p/19125998

Axios 是一个基于 Promise 的流行的 HTTP 客户端,用于浏览器和 Node.js 环境,支持 Promise API、拦截请求和响应、转换请求数据和响应数据等功能。

一、安装 Axios

  1. 使用 npm 或 yarn 安装(适用于 Vue/React 等项目):

    npm install axios --save
    # 或
    yarn add axios
    
  2. 使用 CDN 引入(适用于原生 HTML 项目):

    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    

二、基本使用方法

1. 发送 GET 请求

用于从服务器获取数据,可通过 URL 参数传递数据。

// 引入 Axios(模块化项目中)
import axios from 'axios';// 发送 GET 请求
axios.get('https://api.example.com/users').then(response => {console.log('请求成功:', response.data); // 服务器返回的数据}).catch(error => {console.log('请求失败:', error);});// 带参数的 GET 请求
axios.get('https://api.example.com/users', {params: {id: 123, // 会自动拼接到 URL:?id=123name: '张三'}}).then(response => {console.log(response.data);}).catch(error => {console.log(error);});
2. 发送 POST 请求

用于向服务器提交数据(如表单提交、创建资源),数据放在请求体中。

// 发送 POST 请求
axios.post('https://api.example.com/users', {name: '张三',age: 20,email: 'zhangsan@example.com'}).then(response => {console.log('创建成功:', response.data);}).catch(error => {console.log('创建失败:', error);});
3. 其他请求方法

Axios 支持所有 HTTP 方法:getpostput(更新资源)、delete(删除资源)、patch(部分更新)等,用法类似:

运行

// PUT 请求(全量更新)
axios.put('https://api.example.com/users/123', { name: '李四' }).then(response => console.log(response)).catch(error => console.log(error));// DELETE 请求
axios.delete('https://api.example.com/users/123').then(response => console.log(response)).catch(error => console.log(error));

三、Axios 配置

可以通过配置简化重复的请求参数(如基础 URL、请求头、超时时间等)。

1. 全局配置

设置所有请求的默认配置:

axios.defaults.baseURL = 'https://api.example.com'; // 基础 URL
axios.defaults.headers.common['Authorization'] = 'Bearer token123'; // 全局请求头
axios.defaults.headers.post['Content-Type'] = 'application/json'; // POST 请求头
axios.defaults.timeout = 5000; // 超时时间(毫秒)
2. 实例配置

创建 Axios 实例,单独配置(适用于多服务器请求场景):

// 创建实例
const instance = axios.create({baseURL: 'https://api.another-example.com',timeout: 8000,headers: { 'X-Custom-Header': 'foobar' }
});// 使用实例发送请求
instance.get('/data').then(response => console.log(response));

四、拦截器

拦截器用于在请求发送前或响应返回后统一处理(如添加 token、处理错误)。

1. 请求拦截器

在请求发送前执行(如添加认证 token):

// 添加请求拦截器
axios.interceptors.request.use(config => {// 请求发送前的处理(如添加 token)const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config; // 必须返回 config},error => {// 请求错误时的处理return Promise.reject(error);}
);
2. 响应拦截器

在响应返回后执行(如统一处理错误):

// 添加响应拦截器
axios.interceptors.response.use(response => {// 响应成功时的处理(只返回数据部分)return response.data;},error => {// 响应错误时的处理(如 token 过期)if (error.response && error.response.status === 401) {// 跳转到登录页window.location.href = '/login';}return Promise.reject(error);}
);

五、错误处理

详细处理请求中的各种错误(网络错误、服务器错误等):

axios.get('/data').then(data => console.log(data)).catch(error => {if (error.response) {// 服务器响应了但状态码不是 2xx(如 404、500)console.log('状态码:', error.response.status);console.log('响应数据:', error.response.data);} else if (error.request) {// 请求已发送但无响应(如网络错误)console.log('无响应:', error.request);} else {// 其他错误console.log('错误信息:', error.message);}});

六、并发请求

同时发送多个请求,等待所有请求完成后处理:

// 并发请求
axios.all([axios.get('/users'),axios.get('/posts')
])
.then(axios.spread((usersResponse, postsResponse) => {// 两个请求都完成后执行console.log('用户数据:', usersResponse.data);console.log('文章数据:', postsResponse.data);
}))
.catch(error => {console.log('请求失败:', error);
});

七、在 Vue/React 中使用

在框架中通常会封装 Axios 作为请求工具,例如在 Vue 中:

// src/utils/request.js
import axios from 'axios';const request = axios.create({baseURL: '/api', // 基础路径(配合代理解决跨域)timeout: 5000
});// 请求拦截器
request.interceptors.request.use(config => {// 添加 tokenconfig.headers.token = localStorage.getItem('token');return config;
});// 响应拦截器
request.interceptors.response.use(res => res.data,err => Promise.reject(err)
);export default request;

在组件中使用:

import request from '@/utils/request';request.get('/users').then(data => {console.log(data);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

镇江网站开发图片摄影网站

在2018杭州云栖大会的主论坛上&#xff0c;阿里云技术研发总经理蒋江伟发表了《飞天2.0&#xff0c;万物智能的基础服务》的主题演讲&#xff0c;从全连接、安全、简便、高速四个方面&#xff0c;阐述了飞天2.0网络的新特性。 蒋江伟表示&#xff0c;万物智能时代产生的海量数据…

网站域名怎么做杰恩设计网站是谁做的

JVM 案例 案例一&#xff1a;服务器内存不足&#xff0c;影响Java应用 问题&#xff1a; 收到报警&#xff0c;某Java应用集群中一台服务器可用内存不足&#xff0c;超过报警阈值。 排查过程&#xff1a; 首先&#xff0c;通过Hickwall查看该应用各项指标&#xff0c;发现无论…

网站是怎样制作的自媒体135手机版

电商技术揭秘相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xf…

网站开发分包网站开发运营工程师待遇

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、默认成员函数二、构造函数构造函数的概念及特性 三、析构函数析构函数的特性…

网站如何交换链接临淄房产信息网123

文章目录 一、区别二、编写loader三、编写plugin参考文献 一、区别 前面两节我们有提到Loader与Plugin对应的概念&#xff0c;先来回顾下 loader 是文件加载器&#xff0c;能够加载资源文件&#xff0c;并对这些文件进行一些处理&#xff0c;诸如编译、压缩等&#xff0c;最终…

『回忆录』返校前夜 230102

经典佳作返校,一件每个周末都会经历的事情。而对于居家学习的我们,成了一个梦。 而这个梦,如今已变成现实。一个再平常不过的周末,我们上着竞赛。可是,中午wsh就把我们所有人叫到教室。 “因为疫情,学校要求你们…

断更

今天很忙,没时间学习

前端学习教程-环境配置

1 安装nvm(下载地址:https://github.com/coreybutler/nvm-windows/releases) 2.查看node和npm版本 3.配置npm registry 4.安装VSCode(https://code.visualstudio.com/) 5.VSCode安装插件:Live Server、Vue - Offic…

详细介绍:一篇文章讲清Prompt、Agent、MCP、Function Calling

详细介绍:一篇文章讲清Prompt、Agent、MCP、Function Callingpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

docker单机部署hadoop 官方镜像3.3.6 过程问题记录 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

20251004 qmd 弱化规约(未完成)

弱化规约就是指,对于原问题F,先考虑一个弱化版问题F 如果解决F的复杂度是O(n),那么F一定不会优于F 通常的,如果一个算法G能解决F和F,但是一个能解决F的算法不能解决F,那么F比F要弱。 一般弱化问题不能丢掉关键的…

深入解析:人工智能专业术语详解(C)

深入解析:人工智能专业术语详解(C)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

徐州做公司网站多少钱wordpress 评论优化

上期已经信息收集阶段已经完成&#xff0c;接下来是漏洞利用。 靶场思路 通过信息收集得到两个吧靶场的思路 1、http://192.168.195.33/phpmyadmin/&#xff08;数据库的管理界面&#xff09; root/root 2、http://192.168.195.33/yxcms/index.php?radmin/index/login&am…

怎么建设投票网站平面设计提高审美网站

当谈论MobileNet、MobileNetV2和MobileNetV3时&#xff0c;我们指的是一系列基于深度学习的轻量级神经网络架构&#xff0c;这些架构旨在在保持高度准确性的同时减少模型的计算和参数量。以下是它们各自的创新点的详细总结&#xff1a; MobileNet&#xff1a; 深度可分离卷积&…

网站后台界面 园林设计网站负责人照片

如果你想通过 RabbitMQ 的死信队列功能实现消费者拒绝消息投递到死信交换机的行为&#xff0c;你可以按照以下步骤操作&#xff1a; 创建原始队列&#xff0c;并将其绑定到一个交换机上&#xff1a; export RABBITMQ_SERVER127.0.0.1 export RABBITMQ_PORT5672 export RAB…

BQ24650 MPPT管理控制芯片测试

BQ24650 MPPT管理控制芯片测试 10月1号开始焊接调试,1号下午开始进行充电测试,截止到10月3号晚上23:05(因为夜间无人监护,所以夜间断电,停止测试。)终于看到充电结束,进入浮充状态(绿灯亮、红灯灭)…

黄金替罪羊

题面 黄金替罪羊实在是太难玩了,所以开拓者弄了个简化版。 黄金替罪羊需要替罪羊和开拓者的配合一起完成任务。 地图可以认为是一棵带权树,每次开拓者会问你一个有序点对 (u,v),表示起点为 u 而终点为 v,在开拓者的…

现在网站如何做优化装修体验馆app

行级触发器&#xff1a;当触发器被触发时&#xff0c;要使用被插入、更新或删除的记录中的列值&#xff0c;有时要使用操作前、后列的值.:NEW 修饰符访问操作完成后列的值:OLD 修饰符访问操作完成前列的值例1: 建立一个触发器, 当职工表 emp 表被删除一条记录时&#xff0c;把被…

有没有帮人做数学题的网站网站建设需求和页面需求怎么提

文章目录出库单业务流程基本流程扩展流程找不到符合条件的仓库&#xff0c;要求部分退款&#xff08;未生成出库单时&#xff09;找不到符合条件的仓库&#xff0c;全部退款&#xff08;未生成出库单时&#xff09;找不到符合条件的仓库&#xff0c;等待库存补足&#xff08;未…

JVM 深入研究 -- 详解class 材料

JVM 深入研究 -- 详解class 材料pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…