关于使用axios的一些心得技巧分享
本文主要跟大家介绍了关于使用axios的一些心得技巧,分享出来供大家参考学习,下面来一起看看详细的介绍:
一、带cookie请求
axios默认是请求的时候不会带上cookie的,需要通过设置withCredentials:true来解决。
二、使post请求发送的是formdata格式数据
首先必须设置请求头
//可以通过这种方式给axios设置的默认请求头
axios.defaults.headers={
"Content-Type":"application/x-www-form-urlencoded"
}
其次再发送之前需要处理一下数据
//发送请求前处理request的数据
axios.defaults.transformRequest=[function(data){
//Dowhateveryouwanttotransformthedata
letnewData=''
for(letkindata){
newData+=encodeURIComponent(k)+'='+encodeURIComponent(data[k])+'&'
}
returnnewData
}]
三、拦截器
你可以截取请求或响应在被then或者catch处理之前。
举个小例子:发ajax请求的时候需要有一个loading动画,而在请求回来之后需要把loading动画关掉,就可以使用这个拦截器来实现。
//添加请求拦截器
axios.interceptors.request.use(config=>{
//在发送请求之前做某事,比如说设置loading动画显示
returnconfig
},error=>{
//请求错误时做些事
returnPromise.reject(error)
})
//添加响应拦截器
axios.interceptors.response.use(response=>{
//对响应数据做些事,比如说把loading动画关掉
returnresponse
},error=>{
//请求错误时做些事
returnPromise.reject(error)
})
//如果不想要这个拦截器也简单,可以删除拦截器
varmyInterceptor=axios.interceptors.request.use(function(){/*...*/})
axios.interceptors.request.eject(myInterceptor)
ps:另外附上自己在项目中使用axios的方式
一般会将所有的ajax请求放在一个模块中,新建一个http.js
//http.js
//设置请求baseURL
axios.defaults.baseURL='/api'
//设置默认请求头
axios.defaults.headers={
"Content-Type":"application/x-www-form-urlencoded"
}
//发送请求前处理request的数据
axios.defaults.transformRequest=[function(data){
letnewData=''
for(letkindata){
newData+=encodeURIComponent(k)+'='+encodeURIComponent(data[k])+'&'
}
returnnewData
}]
//带cookie请求
axios.defaults.withCredentials=true
//get请求
functionget(url){
returnbody=>axios.get(url,{params:body})
}
//post请求
functionpost(url){
returnbody=>axios.post(url,body)
}
//导出使用
exportconstlogin=get('/login')
假设配合vue使用
//引入login模块
import{login}from'http'
exportdefault{
methods:{
//配合async/await使用效果更佳
asyncget(){
try{
letres=awaitlogin({account:'admin'})
console.log(res)
}
catch(e){
console.log(e)
}
}
}
}
再另外有些人可能喜欢把axios挂载到Vue的原型上,从而在子组件内可以直接访问的到,做法如下:
Vue.prototype.$http=axios//其他页面在使用axios的时候直接this.$http就可以了
除非页面足够简单,不然我个人不太喜欢这种做法。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对毛票票的支持。