关于使用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 相关文章推荐
通过修改referer下载文件的方法
May 11 Javascript
解析jQuery与其它js(Prototype)库兼容共存
Jul 04 Javascript
JS截取字符串常用方法整理及使用示例
Oct 18 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
Nov 02 Javascript
react-router中的属性详解
Jun 01 Javascript
angularjs使用div模拟textarea文本框的方法
Oct 02 Javascript
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
JS实现json数组排序操作实例分析
Oct 28 Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
PHP中实现图片的锐化
2006/10/09 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
php组合排序简单实现方法
2016/10/15 PHP
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python中扩展包的安装方法详解
2017/06/14 Python
分享vim python缩进等一些配置
2018/07/02 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
基于keras中的回调函数用法说明
2020/06/17 Python
厂长助理岗位职责
2013/12/27 职场文书
会计学专业求职信
2014/07/17 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书