=======================================================================================
axios优势:
=======================================================================================
axios基本使用:
默认是get请求
改变发送方式:
它的内部是会返回一个promise的,所以可以直接使用 .then(res=>{ console.log( res ) }) 来接收数据
使用jsonp的方式获取数据:在网址后面添加?callback=自定义名
结果:自定义名(所有数据),会包裹所有数据
当url太长的时候:
可以使用默认的get请求的参数拼接
=======================================================================================
axios发送并发请求:axios.all ([ ])
//发送并发请求
axios.all([
axios({
url:'http://123.207.32.32:8000/home/multidata'
}),
axios({
url:'http://123.207.32.32:8000/home/data',
params:{
type:'sell',
page:3
}
})
]).then((res)=>{
console.log(res)
})
then里面也可以使用axios.spread()
方法拆分数据:
常见的配置信息,放进axios里面的:
全局请求配置格式:axios.defaults.
timeout(超时单位/毫秒)
注意事项:
get请求类型对应-------->params:{ }
post请求类型对应--------->data:{ }
=======================================================================================
axios的实例和网络封装:
instance(实例的意思)
因为很多时候请求的服务器或ip地址并不是唯一的,所以不能直接写死全局的baseURL
要创建实例来分别配置baseURL
由于第三方框架有时候会不再维护,为了不让每个组件直接依赖第三方框架,需要进行封装
使用的时候:
导入import {request} from './network/request'
使用:跟使用promise一样
=======================================================================================
关于封装网络请求的拓展方法:
1、用promise包装,因为假如换了第三方框架需要用到:
先import axios from ‘axios’
使用的时候:
要先导入配置文件
2、使用回调函数的方法(1)封装:
!!!使用的时候是传两个带参数的函数:
箭头函数:等于以下形式
function(res){
console.log(res)
}
3、使用回调函数的方法(2)进行封装:
!!!使用的时候传一个大对象,里面有三个属性,有一个是对象的类型,是有两个是函数的类型:
先导入文件再使用
=======================================================================================
axios拦截器:
分四种情况拦截:
拦截处理完记得返回回去,不然别人用不了
1、请求成功
2、请求失败
instance.interceptors.request.use(成功,失败)
3、响应成功
4、响应失败
返回数据的时候只需要 res.data 因为其他属性不太需要
instance.interceptors.response.use(成功,失败)