2.axios 的配置选项和all与拦截器

95 阅读2分钟

共同选项

1.axios 的基本配置相关一些东西

全局配置选项

//配置axios 的配置选项
axios.default.baseURL="http://httpbin.org"
axios.default.timeout=10000 
axios.get('/mumuList',{
params:{
name:"zhang",
age:18}
}).then(res=>{
console.log(res)
})

单独配置

//配置axios 的配置选项 
axios.get('/mumuList',{
params:{
name:"zhang",
age:18},
timeout:5000,
headers:{}
}).then(res=>{
console.log(res)
})

axios.all

多个请求,一起给数据的时候,一起返回。也就是全部请求完成了才给返回数据

axios.all 其实内部用的就是promise.all

axios.all([
axios.get('/get',{params:{name:'zhang',age:16}}),
axios.get('/get',{params:{name:'zhang',age:16}})]).then((res)=>{ //其实服务器返回的都是在.data 里面的
console.log(res[0].data)
console.log(res[1].data)})

axios的拦截器

通俗来讲我们会在客户端里面发送网络请求,网络请求是向服务器发送,但是在发送网络请求之前,也就是说请求还没有发出去,我们客户端可能需要额外的去做一些事情:

1.假如每个请求都需要携带token,来验证我们的身份,那就应该在请求之前把token 放到header里面(header[授权的单词]=‘token’),如果没有加token 就给拦截掉,加了token 就发送请求

2.假如请求时间比较长,会在界面上显示lodding,请求之前显示lodding 组件,请求结束移除

响应拦截:

1.响应结果给到这边,这里不一定是我们想要的结果,我们可能想对这些结果做一些处理,因为axios给我们这边的是response 类型的数据,真实数据其实在 _response.data_ 里面的,我们需要做的是把服务器返回的数据拦截下来,直接把data 拿到,意味着我们以后在界面显示数据,就不需要.data,因为我们已经从_axios.response.data_取出过这个数据啦

/*
interceptors:拦截器
request:拦截请求
response:拦截响应
use:使用拦截器
**/

//拦截请求
//fn1:发送请求成功会执行的函数,fn2:请求发送失败会执行的函数
//axios.interceptors.request.use(fn1,fn2)
axios.interceptors.request.use((config)=>{
//想做的一些操作:
//1.给请求添加token
//2.添加isLoading 动画
console.log("请求成功的拦截")
return config //最后将这些更改的配置返回出去
},(err)=>{
//这里可以写一一些在在界面提示请求发生错误的提示
console.log("请求发送错误")
return err
})//拦截响应
//fn1:数据响应成功(服务器正常的返回了数据,20x)
axios.interceptors.response.use((res)=>{
console.log("响应成功的拦截")
return res.data
},(err)=>{
console.log("响应失败")
return err
})