axios快速上手,详细解读

article/2025/5/11 4:53:37

一、axios的理解

1. axios是什么

  • 前端最流行的 ajax 请求库
  • react/vue 官方都推荐使用 axios 发 ajax 请求
  • axios文档

2. axios的特点

  • 基于 xhr + promise 的异步 ajax 请求库
  • 浏览器端/node 端都可以使用
  • 支持请求/响应拦截器
  • 支持请求取消
  • 请求/响应数据转换
  • 批量发送多个请求

二、axios的使用

在这里插入图片描述

1. axios(config)

通用/最本质的发任意类型请求的方式

// 发起一个post请求
axios({method: 'post',url: '/user/12345',data: {firstName: 'Fred',lastName: 'Flintstone'}
});

2. axios(url[, config])

  • 发起一个 GET 请求 (默认请求方式)

axios('/user/12345');

3. axios.request(config):

等同于 axios(config)

4. 请求方式别名

为了方便起见,已经为所有支持的请求方法提供了别名。

在使用别名方法时, urlmethoddata 这些属性都不必在配置中指定。

  • axios.get(url[, config])
  • axios.delete(url[, config])
  • axios.head(url[, config])
  • axios.options(url[, config])
  • axios.post(url[, data[, config]])
  • axios.put(url[, data[, config]])
  • axios.patch(url[, data[, config]])

5. axios.defaults.xxx

全局 axios 默认值

//默认配置
axios.defaults.method = 'GET'; //设置默认的请求类型为 GET
axios.defaults.baseURL = 'http://localhost:3000'; //设置基础 URL
axios.defaults.params = {id: 100
};
axios.defaults.timeout = 3000;

6. 自定义实例默认值

// 创建实例时配置默认值
const instance = axios.create({baseURL: 'https://api.example.com'
});

7. axios拦截器

  • axios.interceptors.request.use()

    添加请求拦截器

  • axios.interceptors.response.use()

    添加响应拦截器

  • 说明: 调用 axios()并不是立即发送 ajax 请求, 而是需要经历一个较长的流程

  • 流程: 请求拦截器2 => 请求拦截器1 => 发ajax请求 => 响应拦截器1 => 响应拦截器 2 => 请求的回调

  • 注意: 此流程是通过 promise 串连起来的, 请求拦截器传递的是 config, 响应拦截器传递的是 response

// 设置请求拦截器  config配置对象
axios.interceptors.request.use(function (config) {console.log('请求拦截器 成功 - 1号')// 修改config中的参数config.params = {a: 100}return config;// throw '参数出问题了'
}, function (error) {console.log('请求拦截器 失败 - 1号')return Promise.reject(error);
});// 设置请求拦截器
axios.interceptors.request.use(function (config) {console.log('请求拦截器 成功 - 2号')config.timeout = 2000return config;
}, function (error) {console.log('请求拦截器 失败 - 2号')return Promise.reject(error);
});// 设置响应拦截器
axios.interceptors.response.use(function (response) {console.log('响应拦截器 成功 - 1号')return response.data;// return response;
}, function (error) {console.log('响应拦截器 失败 - 1号')return Promise.reject(error);
});// 设置响应拦截器
axios.interceptors.response.use(function (response) {console.log('响应拦截器 成功 - 2号')return response;
}, function (error) {console.log('响应拦截器 失败 - 2号')return Promise.reject(error);
});// 请求2 1 响应1 2
axios({method: 'GET',url: 'http://localhost:3000/posts'
}).then(response => {console.log('成功的结果')console.log(response)
}).catch(reason => {console.log(reason)
})

8. axios.create([config])

创建一个axios实例

  • 根据指定配置创建一个新的 axios, 也就就每个新 axios 都有自己的配置
  • 新 axios 只是没有取消请求和批量发请求的方法, 其它所有语法都是一致的
  • 为什么要设计这个语法?
    • 需求: 项目中有部分接口需要的配置与另一部分接口需要的配置不太一 样, 如何处理
    • 解决: 创建 2 个新 axios, 每个都有自己特有的配置, 分别应用到不同要 求的接口请求中
const instance = axios.create({baseURL: 'https://some-domain.com/api/',timeout: 1000,headers: {'X-Custom-Header': 'foobar'}
});

9.取消请求

  • 方式一:CancelToken

    <body><div class="container"><h2 class="page-header">axios取消请求</h2><button class="btn btn-primary"> 发送请求 </button><button class="btn btn-warning"> 取消请求 </button></div><script>//获取按钮const btns = document.querySelectorAll('button');// 声明全局变量let cancel = null// 发送请求btns[0].onclick = function () {// 检测上一次请求是否完成if (cancel) cancel()axios({method: "GET",url: 'http://localhost:3000/posts',// 1. 添加配置对象的属性cancelToken: new axios.CancelToken(function executor(c) {// 将c的值赋值给cancelcancel = c;})}).then(response => {console.log(response)cancel = null})}// 取消请求btns[1].onclick = function () {cancel()}</script>
    </body>
    
  • 方式二:AbortController

    <body><div class="container"><h2 class="page-header">axios取消请求</h2><button class="btn btn-primary"> 发送请求 </button><button class="btn btn-warning"> 取消请求 </button></div><script>//获取按钮const btns = document.querySelectorAll('button');// 声明全局变量let controller = null// 发送请求btns[0].onclick = function () {// 如果控制器存在,说明有上个请求,就它取消并设置为空if (controller) {controller.abort()controller = null}//没有的话就到这一步controller = new AbortController()axios.get('http://localhost:3000/posts', {// 1. 添加配置对象的属性signal: controller.signal}).then(response => {console.log(response)})}// 取消请求btns[1].onclick = function () {controller.abort()controller = null// console.log(1)}</script>
    </body>
    

http://chatgpt.dhexx.cn/article/Um2bTXxY.shtml

相关文章

Micropython——使用匿名上位机工作站实现电机参数实时绘图并PID调参

感谢龙哥指导使用如此优秀的上位机调参软件快速实现基于pyb开发的机器人PID参数的调节整定。 匿名工作站上位机简介 【经验篇】匿名上位机4.34简单上手 使用匿名工作站上位机可以快速完成对机器人底盘电机的PID参数整定&#xff0c;而且绘图速度极快&#xff0c;基本无延时&a…

axios--》axios初步操作

目录 初识axios axios常用语法 axios发送get请求 axios发送post请求 axios发送Ajax请求 初识axios axios是一个基于promise的网络请求库&#xff0c;作用于node.js和浏览器中&#xff0c;在服务端它使用原生node.js 的 http 模块&#xff0c;而在客户端(浏览器)则使用 X…

Axios(万字详细教程)

Axios介绍 1、Axios是什么&#xff1f; Axios是一个基于promise的HTTP库&#xff0c;类似于jQuery的ajax&#xff0c;用于http请求。可以应用于浏览器端和node.js&#xff0c;既可以用于客户端&#xff0c;也可以用于node.js编写的服务端。 2、Axios特性 &#xff08;1&…

R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据...

原文链接&#xff1a;http://tecdat.cn/?p24152 什么是PCR&#xff1f;&#xff08;PCR PCA MLR&#xff09;&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 • PCR是处理许多 x 变量的回归技术• 给定 Y 和 X 数据&#xff1a;• 在 X 矩阵上进行 PCA– …

ESL3.5 学习笔记(主成分回归,偏最小二乘回归步骤详解)

3.5 运用派生输入方向的方法 这是一篇有关《统计学习基础》&#xff0c;原书名The Elements of Statistical Learning的学习笔记&#xff0c;该书学习难度较高&#xff0c;有很棒的学者将其翻译成中文并放在自己的个人网站上&#xff0c;翻译质量非常高&#xff0c;本博客中有…

R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据

最近我们被客户要求撰写关于高维数据惩罚回归的研究报告&#xff0c;包括一些图形和统计输出。 主成分分析PCA降维方法和R语言分析葡萄酒可视化实例 主成分分析PCA降维方法和R语言分析葡萄酒可视化实例 &#xff0c;时长04:30 1 介绍 在本文中&#xff0c;我们将研究以下主题…

回归预测 | MATLAB实现PCR(主成分回归)多输入单输出

回归预测 | MATLAB实现PCR(主成分回归)多输入单输出(PCA Regression) MATLAB实现数据降维的PCA(主成分分析)函数有pca和pcacov两个。 pca函数可以直接利用原始数据进行主成分分析; pcacov函数针对原始数据的协方差矩阵进行主成分分析,本程序实现了两种分析方法的预测结果对比…

Python数据分析案例22——财经新闻可信度分析(线性回归,主成分回归,随机森林回归)

本次案例还是适合人文社科领域&#xff0c;金融或者新闻专业。本科生做线性回归和主成分回归就够了&#xff0c;研究生还可以加随机森林回归&#xff0c;其方法足够人文社科领域的硕士毕业论文了。 案例背景 有八个自变量&#xff0c;[微博平台可信度,专业性,可信赖性,转发量,…

matlab实现主成分回归

主成分回归就是先对数据进行主成分分析&#xff0c;再进行多元线性回归。 主成分分析参考上篇博客&#xff0c;蹦篇博客介绍多元线性回归及其MATLAB实现。 多元线性回归是一种常用的线性建模方法。如果有两个或两个以上的自变量&#xff0c;就称为多元回归。事实上&#xff0c;…

R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据

最近我们被客户要求撰写关于主成分回归的研究报告&#xff0c;包括一些图形和统计输出。 什么是PCR&#xff1f;&#xff08;PCR PCA MLR&#xff09; • PCR是处理许多 x 变量的回归技术 • 给定 Y 和 X 数据&#xff1a; • 在 X 矩阵上进行 PCA – 定义新变量&#xff1…

主成分回归python实现

主成分分析python实现 这是我一直都想写的内容&#xff0c;但是迟迟没有动手开始写&#xff0c;主要的原因是没有理解python中PCA降维后再进行回归时应该要怎么做。再网上查了很多资料&#xff0c;也没有这方面的讲解&#xff0c;书上也是讲到了PCA降维就结束了。以下是我使用…

基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比(生信数基实验作业)

基于R语言的主成分回归&#xff08;PCR&#xff09;与Lasso回归在水稻基因组预测中的对比 0 引言 全基因组选择是 21 世纪动植物育种的一种重要的选择策略&#xff0c;其核心就是全基因组预测&#xff0c;即基于分布在整个基因组上的多样性分子标记来对育种值进行预测&#x…

SPSS 特征筛选、主成分回归

小数据 → y&#xff1a;连续性变量 → x&#xff1a;6个以内 → 理论 → 验证 → 统计分析&#xff1b; 大数据 → y&#xff1a;分类变量 → x&#xff1a;15个以内 → 探索 → 数据挖掘&#xff1b; 一、X的选择流程 业务&#xff08;业务专家&#xff09;&#xff1a;运…

R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化

概述和定义 在本文中&#xff0c;我们将考虑一些线性模型的替代拟合方法&#xff0c;除了通常的 普通最小二乘法。这些替代方法有时可以提供更好的预测准确性和模型可解释性。最近我们被客户要求撰写关于模型选择的研究报告&#xff0c;包括一些图形和统计输出。 主成分分析P…

主成分分析应用之主成分回归

主成分回归分析 对于OXY数据集的变量解释如下&#xff1a; 对上述数据进行回归模型的拟合&#xff0c;得到模型&#xff1a; 从模型的显著性检验结果看出&#xff1a;除了常数项以及β3显著&#xff0c;其他变量系数都不通过显著性检验。同时&#xff0c;从模型整体拟合效果来看…

高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据...

全文链接&#xff1a;http://tecdat.cn/?p23378 在本文中&#xff0c;我们将使用基因表达数据。这个数据集包含120个样本的200个基因的基因表达数据。这些数据来源于哺乳动物眼组织样本的微阵列实验&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 …

主成分回归分析实战教程

本文介绍主成分回归分析(Principal Components Regression)&#xff0c;并通过示例展示其实现过程。 给定p个预测变量和响应变量&#xff0c;多元线性回归使用如最小二乘法获得最小误差平方和(RSS)&#xff1a; RSS Σ ( y i – y ^ i ) 2 {Σ(y_i – ŷ_i)^2} Σ(yi​–y^​…

机器学习——数据的共线性问题(岭回归、LASSO回归、逐步回归、主成分回归)

一、如何检验共线性 容忍度&#xff08;Trlerance&#xff09;&#xff1a;容忍度是每个自变量作为因变量对其他自变量进行回归建模时得到的残差比例&#xff0c;大小用1减得到的决定系数来表示。容忍度的值介于0和1之间&#xff0c;如果值越小&#xff0c;说明这个自变量与其…

TI的CC2530单片机检测不同类型的方波

之前仅检测过一个引脚上一种方波信号&#xff0c;现在要再引脚上区分三种不同的波形。着实头大了好一会儿。 要检测的三种波形如下图所示&#xff1a; 每种波形的持续长度为500us,时间间隔为10ms. 比如我们在P0_2上检测这个波形&#xff0c;首先要对P0_2进行初始化操作&#…

单片机|CC2530实验入门

本教程为实验入门&#xff0c;手把手教你编译一个工程 一、USB驱动 仿真器设备的连接 【说明】USB接口不够可以使用USB集线器扩展&#xff0c;且互相不会干扰&#xff0c;非常方便。 由于用到了CC仿真器&#xff08;smart RF04EB&#xff09;&#xff0c;需要相关驱动。连接…