前言
使用axios可以统一做请求响应拦截,例如请求响应时我们拦截响应信息,判断状态码,从而弹出报错信息。请求超时的时候断开请求,还可以很方便地使用then或者catch来处理请求。
下载源码
安装
npm install axios --save
建立http.js文件
在/src/utils/目录下建立一个htttp.js
1.首先导入axios和router。
import axios from 'axios'; import router from '../router';
2.接着设置axios请求参数。
axios.defaults.timeout = 5000; //请求超时5秒 axios.defaults.baseURL =''; //请求base url axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //设置post请求是的header信息
如果你要用到session验证码功能,让请求携带cookie,可以加上以下一行:
axios.defaults.withCredentials = true
3.然后,我们要给请求加个拦截器,就是在请求即将发送之前,我们需要给请求添加信息,比如下面的代码中,我们给请求添加header信息,header中添加token,这样每次请求都会在header中携带token信息。这在我们的接口开发中经常用到。
//http request 拦截器 axios.interceptors.request.use( config => { let token = sessionStorage.getItem('token') if (token) { // 判断是否存在token,如果存在的话,则每个http header都加上token config.headers = { 'X-token': token } } return config }, err => { return Promise.reject(err) } )
4.接下来,我们看下请求返回时的拦截器。
比如我们发送请求时,如果后端返回错误代码,则前端应该提示信息。比如后台返回没有权限,不允许访问,跳转到登录页,这些都可在拦截器上完成。
axios.interceptors.response.use( response => { if (response.data.code === 4003) { Toast({ mes: '您没有权限操作!', timeout: 1500, callback: () => { router.go(-1); } }); return false; } if (response.data.code === -1) { localStorage.removeItem('token') router.push({ path:"/login", querry:{redirect: router.currentRoute.fullPath}//从哪个页面跳转 }) } return response }, err => { if (err.code === 'ECONNABORTED' && err.message.indexOf('timeout') !== -1) { Toast({ mes: '网络异常,连接超时...', timeout: 1500 }); } return Promise.reject(err) } )
5.现在我们来封装一个get方法:
/** * 封装get方法 * @param url * @param data * @returns {Promise} */ export function get(url, params={}, headers={}){ return new Promise((resolve, reject) => { axios.get(url,{ params: params, headers: headers }) .then(response => { resolve(response.data); }) .catch(err => { reject(err) }) }) }
6.再封装一个post方法:
/** * 封装post请求 * @param url * @param data * @returns {Promise} */ export function post(url, data = {}){ return new Promise((resolve, reject) => { axios.post(url, data) .then(response => { resolve(response.data); }, err => { reject(err) }) }) }
使用
在main.js中引入:
import {post,get} from './utils/http' //定义全局变量 Vue.prototype.$post = post; Vue.prototype.$get = get;
在组件中使用:
this.$post(url, params) .then((res) => { if (res.result === 'success') { this.$message({ message: '登录成功!', type: 'success' }) this.$router.push('/main') } else { this.$message.error(res.msg) this.refreshCode(); } });
这段代码是用户登录发送post请求的代码示例,其他get请求也是一样的处理方式。接下来我们会有文章具体讲解如何使用封装好的axios实现登录的例子,敬请关注。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]