关于使用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 相关文章推荐
jQuery 使用手册(六)
Sep 23 Javascript
简单实用的js调试logger组件实现代码
Nov 20 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
May 03 Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 Javascript
PHP 数组current和next用法分享
Mar 05 Javascript
angularjs实现的前端分页控件示例
Feb 10 Javascript
js实现下拉框效果(select)
Mar 28 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
实例讲解JavaScript截取字符串
Nov 30 Javascript
详解JavaScript修改注册表的方法
Jan 05 Javascript
如何在vue中使用jointjs过程解析
May 29 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
Nov 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制作新闻系统的思路
2006/10/09 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python实现的快速排序算法详解
2017/08/01 Python
python字典改变value值方法总结
2019/06/21 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
为什么会有内存对齐
2016/10/10 面试题
C#公司笔试题
2014/03/28 面试题
偷看我的初中毕业鉴定
2014/01/29 职场文书
篮球比赛策划方案
2014/06/05 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
《称赞》教学反思
2016/02/17 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL