axios基础(一)

article/2025/5/11 4:00:46

1.封装

最简单的封装(这个了解下就行,主要看下下面)

  <button onclick="testPost()">发送POST请求</button><script>function testGet(){axios({url:"https://api.hh2022.cn/main/searchPage/2023/1/5",method:'GET'}).then(response =>{console.log(response)},error => {alert(error.message)})}function testPost(){axios({url:"http://localhost:8080/user/login",method:'POST',data:{"username":'chen',"password":'111'}})}//封装function axios({url,method="GET",params={},data={},}) {//返回一个promise对象return new Promise((resolve,reject) => {//处理query参数(拼接到url上) id=1&xxx=abclet queryString = ''Object.keys(params).forEach(key => {queryString += '${key}=${params[key]}&'})if(queryString){//去除最后的&queryString.substring(0,queryString.length-1)//拼接到urlurl += '?'+queryString}//执行异步ajax请求const request = new XMLHttpRequest()//打开连接(初始化请求,没有请求)request.open(method,url,true)//发送请求if(method === 'GET'){request.send()}else if(method ==='POST'){request.setRequestHeader('Content-Type','application/json;charset=utf-8')request.send(JSON.stringify(data))}//绑定状态改变的监听request.onreadystatechange = function(){//如果请求没有完成,直接结束if(request.readyState !== 4){return}//如果响应状态码在[200,300)之间代表成功,否则失败const {status,statusText} = request//请求成功,调用resolve()if(status>=200 && status <=299){const response = {data:JSON.parse(request,response),status,statusText}resolve()}else{ //请求失败,调用reject()reject(new Error("请求失败 状态码:"+status))}}})}</script>

2.正文开始

发POST请求

 <button onclick="testPost()">发送POST请求</button><script>//指定默认配置axios.defaults.baseURL = 'http://localhost:8080'function testPost(){axios({url:"/user/login",method:'post',data:{"username":'chen',"password":'111',}})}</script>

axios.create(config) 对axios请求进行二次封装

  1. 根据指定配置创建一个新的 axios ,也就是每个axios 都有自己的配置
  2. 新的 axios 只是没有 取消请求 和 批量请求 的方法,其它所有语法都是一致的
  3. 为什么要这种语法?
    1. 需求,项目中有部分接口需要的配置与另一部分接口的配置不太一样
    2. 解决:创建2个新的 axios ,每个都有自己的配置,分别对应不同要求的接口请求中
<button onclick="testPost()">发送POST请求</button><script>axios.defaults.baseURL = "http://api.hh2022.cn"const instance = axios.create({baseURL:'http://localhost:8080'})//使用instance发请求 请求地址 http://localhost:8080instance({url:"/user/login",data:{"username":'chen',"password":'111',}})})//请求地址 http://api.hh2022.cnfunction testPost(){axios({url:"/user/login",method:'post',data:{"username":'chen',"password":'111',}})}</script>

3.拦截器

拦截器介绍
一般在使用axios时,会用到拦截器的功能,一般分为两种:请求拦截器、响应拦截器。

请求拦截器 在请求发送前进行必要操作处理,例如添加统一cookie、请求体加验证、设置请求头等,相当于是对每个接口里相同操作的一个封装;

响应拦截器 同理,响应拦截器也是如此功能,只是在请求得到响应之后,对响应体的一些处理,通常是数据统一处理等,也常来判断登录失效等。

比如一些网站过了一定的时间不进行操作,就会退出登录让你重新登陆页面,当然这不用拦截器你或许也可以完成这功能,但是会很麻烦而且代码会产生大量重复,所以我们需要用到拦截器

 

 

应用场景:
1:每个请求都带上的参数,比如token,时间戳等。
2:对返回的状态进行判断,比如token是否过期

 

 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODU4NTI2NA==,size_16,color_FFFFFF,t_70

<button onclick="testPost()">发送POST请求</button><script>axios.defaults.baseURL = "http://api.hh2022.cn"//添加拦截器(回调函数)axios.interceptors.request.use(config => {// Do something before request is sentreturn config;},error => {// Do something with request errorreturn Promise.reject(error);});//添加响应拦截器axios.interceptors.request.use(response =>{console.log("response interceptor2  resolved()")return response},function (error){console.log('response interceptor2 reject()')})//请求地址 http://api.hh2022.cnfunction testPost(){axios({url:"/user/login",method:'post',data:{"username":'chen',"password":'111',}})}</script>

下面是官方用例

// 官方用例
// 1.添加请求拦截器
axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么return config;}, function (error) {// 对请求错误做些什么return Promise.reject(error);});
​
// 2.添加响应拦截器
axios.interceptors.response.use(function (response) {// 对响应数据做点什么return response;}, function (error) {// 对响应错误做点什么return Promise.reject(error);});

1.axios-请求拦截器

  • 什么是请求

  • 什么是axios的请求拦截器

场景

  • 在发起请求之前, 最后对要发送的请求配置对象进行修改

  • 例如: 如果本地有token, 携带在请求头给后台

// 添加请求拦截器--代码实现案例:仅供参考
axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么, 如果vuex里有token携带在请求头中if (store.state.token.length > 0 && config.headers.Authorization === undefined) {// 发起请求之前, 把token携带在请求头上(表明自己身份)config.headers.Authorization = 'Bearer ' + store.state.token}return config
}, function (error) {// 对请求错误做些什么return Promise.reject(error)
})

2.axios-响应拦截器

  • 什么是响应

  • 什么是axios的响应拦截器

场景

  • 在响应回来后, 马上执行响应拦截器函数

  • 例如: 判断是否错误401, 统一进行权限判断

// 添加响应拦截器--代码实现案例:仅供参考
axios.interceptors.response.use(function (response) { // 当状态码为2xx/3xx开头的进这里// 对响应数据做点什么return response
}, async function (error) { // 响应状态码4xx/5xx进这里// 对响应错误做点什么if (error.response.status === 401) { // 身份过期/token无效//  1.清空vuex的token store.commit('setToken', '')store.commit('setRefreshToken', '')// 2. 清空本地token localStorage.removeItem('token')localStorage.removeItem('refresh_token')//  跳转到登录页面登录router.push({path: '/login'})}     return Promise.reject(error)
})

 

 


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

相关文章

Axios的简单学习(一文上手Axios!)

页内目录 一&#xff0c;Axios的介绍 二&#xff0c;Axios的配置 三&#xff0c;Axios的基本格式 四&#xff0c;使用Axios获取数据 一&#xff0c;Axios的介绍 官方介绍 Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中&#xff0c;在Vue中官方…

手撕numpy(五):一招帮你彻底搞懂axis=0和axis=1

↑ 关注 星标 ~ 有趣的不像个技术号 每晚九点&#xff0c;我们准时相约 大家好&#xff0c;我是黄同学 手撕numpy系列持续更新中~ 《手撕numpy(一)&#xff1a;简单说明和创建数组的不同方式》 《手撕numpy(二)&#xff1a;各种特性和简单操作》 《手撕numpy(三)&#xff1a…

Tesorflow学习axis=1

Tesorflow学习axis1 cnp.concatenate(a,b,axis0) axiso 跨行 import numpy as np anp.array([[1,2,3],[4,5,6]]) print(a,a) bnp.array([[7,8,9],[10,11,12]]) print(b,b) cnp.concatenate((a,b),axis0) print(c,c)axis1 跨列 cnp.concatenate(a,b,axis1) 参考&#xff1a;htt…

axios(快速入门)

1、axios的理解和使用 1.1 axios的概述 1.前端最流行的ajax请求库 2.react、vue官方都推荐使用axios访问ajax请求 3.文档https://github.com/axios/axios 4.axios中文网axios中文网|axios API 中文文档 | axios (axios-js.com) 1.2 axios的特点 基于xhr promise的异步ajax请求…

pyechart笔记:opts.AxisOpts

定制化图表的轴线&#xff08;x轴和y轴&#xff09;的样式和设置 0 不设置坐标轴 c1(Bar().add_xaxis([力量,智力,敏捷]).add_yaxis(全能骑士,# 系列名称&#xff0c;用于 tooltip 的显示&#xff0c;legend 的图例筛选。[429,321,296],#系列数据).add_yaxis(猴子,[352,236,4…

axios快速上手,详细解读

一、axios的理解 1. axios是什么 前端最流行的 ajax 请求库react/vue 官方都推荐使用 axios 发 ajax 请求axios文档 2. axios的特点 基于 xhr promise 的异步 ajax 请求库浏览器端/node 端都可以使用支持请求&#xff0f;响应拦截器支持请求取消请求/响应数据转换批量发送…

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…