关于使用axios的一些心得技巧分享

 更新时间:2017年07月02日 08:49:43   作者:命理难说  
vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,所以下面这篇文章主要给大家分享了关于使用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) {
// Do whatever you want to transform the data
let newData = ''
for (let k in data) {
newData += encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) + '&'
}
return newData
}]

三、拦截器

你可以截取请求或响应在被 then 或者 catch 处理之前。

举个小例子:发ajax请求的时候需要有一个loading动画,而在请求回来之后需要把loading动画关掉,就可以使用这个拦截器来实现。

//添加请求拦截器
axios.interceptors.request.use(config => {
 //在发送请求之前做某事,比如说 设置loading动画显示
 return config
}, error => {
 //请求错误时做些事
 return Promise.reject(error)
})

//添加响应拦截器
axios.interceptors.response.use(response => {
 //对响应数据做些事,比如说把loading动画关掉
 return response
}, error => {
 //请求错误时做些事
 return Promise.reject(error)
})

//如果不想要这个拦截器也简单,可以删除拦截器
var myInterceptor = 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) {
let newData = ''
for (let k in data) {
 newData += encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) + '&'
}
return newData
}]
// 带cookie请求
axios.defaults.withCredentials = true

//get请求
function get(url) {
 return body => axios.get(url, { params: body })
 }
//post请求
function post(url) {
return body => axios.post(url, body)
}

//导出使用 
export const login = get('/login')

假设配合vue使用

// 引入login模块
import { login } from 'http'
export default {
 methods:{
 //配合 async/await使用效果更佳
  async get() {
   try {
    let res = await login({ account: 'admin' })
    console.log(res)
   } 
   catch (e) {
    console.log(e)
   }
  }
 }
}

再另外有些人可能喜欢把axios挂载到Vue的原型上,从而在子组件内可以直接访问的到,做法如下:

Vue.prototype.$http = axios //其他页面在使用axios的时候直接 this.$http就可以了

除非页面足够简单,不然我个人不太喜欢这种做法。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍

    Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍

    这篇文章主要给大家介绍了Angularjs中ng-repeat-start与ng-repeat-end的用法,文章开始先进行了简单的介绍,而后通过完整的实例代码详细给大家介绍这两者的用法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • angularjs封装bootstrap时间插件datetimepicker

    angularjs封装bootstrap时间插件datetimepicker

    这篇文章主要介绍了angularjs封装bootstrap时间插件datetimepicker 的相关资料,需要的朋友可以参考下
    2016-06-06
  • Angular.js 实现带手柄自由调整页面大小的功能

    Angular.js 实现带手柄自由调整页面大小的功能

    这篇文章主要介绍了Angular.js 实现带手柄自由调整页面大小的功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • Angular依赖注入optional constructor parameters概念

    Angular依赖注入optional constructor parameters概念

    这篇文章主要为大家介绍了Angular 依赖注入领域里 optional constructor parameters 的概念及使用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • angular2 NgModel模块的具体使用方法

    angular2 NgModel模块的具体使用方法

    这篇文章主要介绍了angular2 NgModel模块的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 详解在Angular项目中添加插件ng-bootstrap

    详解在Angular项目中添加插件ng-bootstrap

    这篇文章主要介绍了详解在 Angular 项目中添加插件 ng-bootstrap,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • angular.element方法汇总

    angular.element方法汇总

    本文主要给大家汇总了一下angular.element的方法,十分的详细,这里推荐给大家 参考下。
    2015-01-01
  • AngularJS日程表案例详解

    AngularJS日程表案例详解

    本文通过实例代码给大家介绍了AngularJS日程表案例详解,通过简单代码实现了添加事件/完成事件/删除事件功能,具体代码大家参考下本文
    2017-08-08
  • AngularJS路由Ui-router模块用法示例

    AngularJS路由Ui-router模块用法示例

    这篇文章主要介绍了AngularJS路由Ui-router模块用法,结合实例形式分析了Ui-router模块的功能、使用方法及相关注意事项,需要的朋友可以参考下
    2017-05-05
  • AngularJS控制器controller给模型数据赋初始值的方法

    AngularJS控制器controller给模型数据赋初始值的方法

    这篇文章主要介绍了AngularJS控制器controller给模型数据赋初始值的方法,涉及AngularJS控制器controller简单赋值操作实现技巧,需要的朋友可以参考下
    2017-01-01

最新评论