关于使用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关于select的相关操作说明
Jan 13 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
javascript cookie的简单应用
Feb 24 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
Aug 31 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
Jul 13 Javascript
深入学习JavaScript中的bom
May 27 Javascript
微信小程序在线客服自动回复功能(基于node)
Jul 03 Javascript
JavaScript创建表格的方法
Apr 13 Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 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 随机生成10位字符代码
2009/03/26 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
Python自动化测试工具Splinter简介和使用实例
2014/05/13 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Python IDLE入门简介
2017/12/08 Python
python采集微信公众号文章
2018/12/20 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
python实现手势识别的示例(入门)
2020/04/15 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
应用化学专业职业生涯规划书
2013/12/31 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
应急管理工作总结2015
2015/05/04 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
Python pandas求方差和标准差的方法实例
2021/08/04 Python
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js