关于使用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 相关文章推荐
javascript 框架小结 个人工作经验
Jun 13 Javascript
Jquery 1.42 checkbox 全选和反选代码
Mar 27 Javascript
jquery动态加载js三种方法实例
Aug 03 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
Aug 21 Javascript
Javascript调试之console对象——你不知道的一些小技巧
Jul 10 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
利用vscode调试编译后的js代码详解
May 14 Javascript
Vue中的v-for指令不起效果的解决方法
Sep 27 Javascript
Vue项目中使用jquery的简单方法
May 16 jQuery
弱类型语言javascript中 a,b 的运算实例小结
Aug 07 Javascript
javascrpt密码强度校验函数详解
Mar 18 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 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
PHP与javascript对多项选择的处理
2006/10/09 PHP
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
IE无法设置短域名下Cookie
2010/09/23 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python选课系统开发程序
2016/09/02 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
python实现的Iou与Giou代码
2020/01/18 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
药剂专业个人求职信范文
2014/04/29 职场文书
五分钟演讲稿
2014/04/30 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2014年团支书工作总结
2014/11/14 职场文书
2014年妇联工作总结
2014/11/21 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
庆元旦主持词
2015/07/06 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python