首页 > 其他分享 >Axios笔记

Axios笔记

时间:2022-10-16 12:44:19浏览次数:61  
标签:axios 请求 request 笔记 Axios 拦截器 data 函数

axios笔记

基本知识

axios返回的是一个promise对象
axios将服务器返回结果自动json解析变成对象形式

请求拦截器和响应拦截器

请求拦截器中可以对config请求参数进行修改
响应拦截器中可以对response响应数据进行处理
拦截器总体上执行先后顺序为
请求拦截器→响应拦截器→用户自定义响应数据
拦截器内部上执行先后顺序为
请求拦截器为栈 响应拦截器队列

axios和Axios的关系

1、语法上:axios不是Axios的实例
2、功能上:axios是Axios的实例
3、axios是Axios.prototype.request函数bind()返回的函数
4、axios作为对象有Axios原型对象上所有方法,有Axios对象上所有属性

axios.create()的instance和axios的区别

相同:
1、都是一个能发任意请求的函数:request(config)
2、都是发特定请求的各种方法:get()/post()/put()/delete()
3、都有默认配置和拦截器的属性:defaults/interceptors
不同:
1、默认配置不一样
2、instance没有axios后面添加的一些方法:create()/CancelToken()/all()

axios 的请求/响应拦截器是什么

  1. 请求拦截器:
在真正发送请求前执行的回调函数
可以对请求进行检查或配置进行特定处理
成功的回调函数, 传递的默认是 config(也必须是)
失败的回调函数, 传递的默认是 error
  1. 响应拦截器
在请求得到响应后执行的回调函数
可以对响应数据进行特定处理
成功的回调函数, 传递的默认是 response
失败的回调函数, 传递的默认是 error

axios 的请求/响应数据转换器是什么?

请求转换器: 对请求头和请求体数据进行特定处理的函数
if (utils.isObject(data)) {
 setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
 return JSON.stringify(data);
}
响应转换器: 将响应体 json 字符串解析为 js 对象或数组的函数
response.data = JSON.parse(response.data)

response 的整体结构

{
 data,
 status,
 statusText,
 headers,
 config,
 request
 }

error 的整体结构

{
 message,
 response,
 request,
}

如何取消未完成的请求?

当配置了 cancelToken 对象时, 保存 cancel 函数
(1) 创建一个用于将来中断请求的 cancelPromise
(2) 并定义了一个用于取消请求的 cancel 函数
(3) 将 cancel 函数传递出来
用 cancel()取消请求
(1) 执行 cacel 函数, 传入错误信息 message
(2) 内部会让 cancelPromise 变为成功, 且成功的值为一个 Cancel 对象
(3) 在 cancelPromise 的成功回调中中断请求, 并让发请求的 proimse 失败, 失败的 reason 为 Cancel 对象

封装axios

request.js 文件中
import axios from 'axios'
import router from './router'
const instance = axios.create(
{
  baseURL: '',		//基础地址
  timeout: 1000,								//延迟时间
  headers: {'X-Custom-Header': 'foobar'}	    //请求头
})		//创建axios实例对象

//设置响应拦截器
instance.interceptors.response.use(res=>{
    const {code,data,msg} = res.data
    if(code==200){			//200为成功请求
        return data
    }else if(code==10001){
        console.log('msg')
        setTimeout(()=>{
            router.push('./login')		
        },1500)
        return Promise.reject(msg)
    }
})

instance.interceptors.request.use(res=>{
    //请求操作
})


export default instance
main.js入口文件
import request from './request'
Vue.prototype.$http =  request   //挂载到Vue原型上
使用的文件中
async getData(){
try{
  const data = 	await this.$http('url')
  console.log(data)
} catch(err){
  console.log(err)
	}
}

标签:axios,请求,request,笔记,Axios,拦截器,data,函数
From: https://www.cnblogs.com/kq981024/p/16795983.html

相关文章

  • VueRouter笔记
    前言由于Vue框架是SPA(单页面应用)不会有不同的html提供给我们跳转,所以要使用路由进行页面的跳转,Vue路由允许我们通过不同的URL访问不同的内容。通过Vue可以实现多视......
  • 【MySQL】实战教程笔记
    序言感谢林晓斌老师,感谢他的教程:https://funnylog.gitee.io/mysql45/MySQL的基础架构主要分为两层服务层连接器:管理连接,验证权限。尽量使用长连接查询缓存:对一个表......
  • kubernetes学习笔记4-pod
    Pod资源定义​自主式pod资源,很少用到,手动创建的资源,用kubectldelete后不会自动创建,而使用pod控制器管理的才会按照用户期望的重新创建;​资源清单:一级字段(apiVersion|kind|m......
  • 详解降维-主成分分析-概率角度(Probabilistic PCA)【白板推导系列笔记】
    教科书对PCA的推导一般是基于最小化重建误差或者最大化可分性的,或者说是通过提取数据集的结构信息来建模一个约束最优化问题来推导的。事实上,PCA还有一种概率形式的推导,那......
  • 详解支持向量机-硬间隔SVM-模型定义【白板推导系列笔记】
    支撑向量机(SVM)算法在分类问题中有着重要地位,其主要思想是最大化两类之间的间隔。按照数据集的特点:1. 线性可分问题,如之前的感知机算法处理的问题2. 线性可分,只有一点......
  • AD笔记总结
    原理图要点:1、新建工程,新建的project是要以后缀PrjPCB2、新建原理图、PCB,右键project,进行New添加3、新建原理图库、PCB库,右键project,进行new添加改变单位显示:View......
  • 笔记本外接显卡方案
    前言本博客的上一篇文章更新于2021年2月,距今已经有一年半了。这一年半我一切正常,没有经历任何糟糕的事情,一直没更新纯粹是因为太忙。一年半的高压下来,我的心态也变化了不......
  • 树莓派学习笔记
    记录一下树莓派的使用,包含操作系统、linux命令、python、硬件等知识。参考《树莓派开发实战》树莓派简介及型号树莓派(RaspberryPi)是一款基于Linux系统的、只有一张......
  • 《流畅的Python第二版》读书笔记——函数作为一等对象
    引言这是《流畅的Python第二版》抢先版的读书笔记。Python版本暂时用的是python3.10。为了使开发更简单、快捷,本文使用了JupyterLab。函数是Python的一等(first-class)对象......
  • spdlog库笔记 (二):编译、安装
    目录安装编译、运行平台编译、安装直接拷贝include文件到用户的项目Windows下编译使用spdlogWindows下使用spdlog参考安装编译、运行平台Linux,FreeBSD,OpenBSD,Solaris,AI......