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


Posted in Javascript onJuly 02, 2017

本文主要跟大家介绍了关于使用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就可以了

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

总结

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

Javascript 相关文章推荐
div+css布局的图片连续滚动js实现代码
May 04 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
Oct 16 Javascript
JS图片预加载 JS实现图片预加载应用
Dec 03 Javascript
javascript中动态加载js文件多种解决办法总结
Nov 15 Javascript
JavaScript学习笔记之定时器
Jan 22 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
Apr 21 Javascript
BooStrap对导航条的改造实践小结
Sep 21 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
Nov 25 Javascript
jQuery实现判断控件是否显示的方法
Jan 11 Javascript
详解vue 配合vue-resource调用接口获取数据
Jun 22 Javascript
vue实现模态框的通用写法推荐
Feb 26 Javascript
React服务端渲染(总结)
Jul 01 #Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 #Javascript
详解node-ccap模块生成captcha验证码
Jul 01 #Javascript
vue元素实现动画过渡效果
Jul 01 #Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
Jun 30 #Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 #Javascript
详解vue中computed 和 watch的异同
Jun 30 #Javascript
You might like
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
js的toUpperCase方法用法实例
2015/01/27 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Python字典遍历操作实例小结
2019/03/05 Python
Python微信操控itchat的方法
2019/05/31 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
单位人事专员介绍信
2014/01/11 职场文书
买房委托公证书
2014/04/08 职场文书
母校寄语大全
2014/04/10 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
2016小学新学期寄语
2015/12/04 职场文书
Python的三个重要函数详解
2022/01/18 Python
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS