关于使用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 firefox不显示本地预览图片问题的解决方法
Nov 12 Javascript
JavaScript 直接操作本地文件的实现代码
Dec 01 Javascript
用Jquery实现多级下拉框无刷新的联动
Dec 22 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
Nov 20 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
JavaScript实现汉字转换为拼音的库文件示例
Dec 22 Javascript
基于Vue实现拖拽功能
Jul 29 Javascript
js时间转换毫秒的实例代码
Aug 21 Javascript
解决vue v-for src 图片路径问题 404
Nov 12 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 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
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
php中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
PHP生成Gif图片验证码
2013/10/27 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
js获取html文件的思路及示例
2013/09/17 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
ES6 十大特性简介
2020/12/09 Javascript
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
解析python的局部变量和全局变量
2019/08/15 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
python异步Web框架sanic的实现
2020/04/27 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
为什么要使用servlet
2016/01/17 面试题
银行实习的自我鉴定
2013/12/10 职场文书
会计求职信
2014/05/29 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers