作者:小池子的思密达 | 来源:互联网 | 2023-09-25 13:52
axios的全局配置和实例配置全局属性axios.defaults.baseURLhttp:localhost:9999APIaxios.defaults.timeout5创
axios的全局配置和实例
//配置全局属性
axios.defaults.baseURL='http://localhost:9999/API'
axios.defaults.timeout=5//创建axios的实例 只有使用这个实例的时候才会生效
let newVar = axios.create({baseUTL:'http://localhost/API',timeout:5000
})
//使用方式
newVar({url:''
})
axios的并发请求
//第一种方式
axios.all([axios.get('http://localhost:9999/API1')axios.get('http://localhost:9999/API2')
]).then(res=>{//请求成功响应的是一个数组console.log(res[0])console.log(res[1])
}).catch(err=>{console.log(err)
})
//第二种方式
axios.all([axios.get('http://localhost:9999/API1')axios.get('http://localhost:9999/API2')
]).then(axios.spread((res1,res2)=>{console.log(res1)console.log(res2)})
).catch(err=>{console.log(err)
})
axios的拦截器
axios.interceptors.request.use 请求拦截器
axios.interceptors.response.use 响应拦截器
axios给我们提供了两大类拦截器一种是请求方向的拦截(成功请求,失败的)
另一种是响应方向的(成功的,失败的)
拦截器的作用 用于我们在网络请求的时候在发起请求或者响应时对操作进行响应的处理
发起请求时可以添加网页加载的动画 使用token认证时
响应的时候可以进行相应的数据处理
//请求方向拦截器
axios.interceptors.request.use(config=>{console.log("进入请求拦截器")console.log(config)return config //一定要return放行
}),err=>{console.log("请求方向失败")console.log(err)
}axios.get('http://localhost:9999/API').then(res=>{console.log(res)
})
//响应方向拦截器
axios.interceptors.response.use({console.log("进入响应拦截器")console.log(config)return config //一定要return放行
}),err=>{console.log("响应方向失败")console.log(err)
}axios.get('http://localhost:9999/API').then(res=>{console.log(res)
})
axios在vue中的模块封装
第一种方式
//封装位置
import axios from 'axios'
export function request(config,success,faill){axios({url:config}).then(res=>{success(res)}).catch(err=>{fail(err)})
}//调用者位置
import { request } from './request.js'
request('http://localhost:9999/API',res=>{console.log(res)
},err=>{console.log(err)
})
第二种方式
//封装位置
import axios from 'axios'
export function request(config){
axios.defaults.baseURL="http://localhost:9999/API"axios(config.url).then(res=>{config.success(res)}).catch(err=>{config.fail(err)})
}//调用者位置
import { request } from './request.js'
request({url:'user',success:res=>{console.log(res)},fail:err=>{console.log(err)}
})
第三种方式
//封装的位置
import axios from 'axios'
export function request(config){return new Promise((resolve, reject)=>{let newVar = axios.create({baseURL:'http://localhost:9999/API',timeout:5000})newVar(config).then(res=>{resolve(res)}).catch(err=>{reject(err)})})
}//调用者位置
import { request } from './request.js'
request({url:'getAllStudent'
}).then(res=>{console.log(res)
}).catch(err=>{console.log(err)
})
第四种方式 (推荐使用)
//封装位置
import axios from 'axios'
export function request(config){let newVar = axios.create({baseURL:'http://localhost:9999/API',timeout:5000})return newVar(config)
}//调用者位置
import { request } from './request.js'
request({url:'getAllStudent'
}).then(res=>{console.log(res)
}).catch(err=>{console.log(err)
})