500拦截报错 axios_axios拦截设置和错误处理方法
现在vue的官方包已经不更新vue-resource了,转而推荐axios,下面是项目实战是总结的axios插件设置:
/**
* @file Axios的Vue插件(添加全局请求/响应拦截器)
*/
// https://github.com/mzabriskie/axios
import axios from 'axios'
// 拦截request,设置全局请求为ajax请求
axios.interceptors.request.use((config) => {
config.headers['X-Requested-With'] = 'XMLHttpRequest'
return config
})
// 拦截响应response,并做一些错误处理
axios.interceptors.response.use((response) => {
const data = response.data
// 根据返回的code值来做不同的处理(和后端约定)
switch (data.code) {
case '0':
// 举例
// exp: 修复iPhone 6+ 微信点击返回出现页面空白的问题
if (isIOS()) {
// 异步以保证数据已渲染到页面上
setTimeout(() => {
// 通过滚动强制浏览器进行页面重绘
document.body.scrollTop += 1
}, 0)
}
// 这一步保证数据返回,如果没有return则会走接下来的代码,不是未登录就是报错
return data
// 需要重新登录
case 'SHIRO_E5001':
// 微信生产环境下授权登录
if (isWeChat() && IS_PRODUCTION) {
axios.get(apis.common.wechat.authorizeUrl).then(({ result }) => {
location.replace(global.decodeURIComponent(result))
})
} else {
// 否则跳转到h5登录并带上跳转路由
const search = encodeSearchParams({
next: location.href,
})
location.replace(`/user/login?${search}`)
}
// 不显示提示消息
data.description = ''
break
default:
}
// 若不是正确的返回code,且已经登录,就抛出错误
const err = new Error(data.description)
err.data = data
err.response = response
throw err
}, (err) => { // 这里是返回状态码不为200时候的错误处理
if (err && err.response) {
switch (err.response.status) {
case 400:
err.message = '请求错误'
break
case 401:
err.message = '未授权,请登录'
break
case 403:
err.message = '拒绝访问'
break
case 404:
err.message = `请求地址出错: ${err.response.config.url}`
break
case 408:
err.message = '请求超时'
break
case 500:
err.message = '服务器内部错误'
break
case 501:
err.message = '服务未实现'
break
case 502:
err.message = '网关错误'
break
case 503:
err.message = '服务不可用'
break
case 504:
err.message = '网关超时'
break
case 505:
err.message = 'HTTP版本不受支持'
break
default:
}
}
return Promise.reject(err)
})
axios.install = (Vue) => {
Vue.prototype.$axios = axios
}
export default axios
以上这篇axios拦截设置和错误处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
500拦截报错 axios_axios拦截设置和错误处理方法相关推荐
- 500拦截报错 axios_axios拦截设置和错误处理
目前想出的处理接口请求进行全局错误提示 的最佳方案,axios整体配置如下 1.基于axiso.interceptors进行响应拦截: 主要负责全局提示错误 axios.interceptors.re ...
- android 7.0编译报错,编译android7.0 sdk错误解决方法
编译时最后报错: SDK: warning: including GNU target out/target/product/generic/system/lib/libext2fs.so SDK: ...
- python导入模块报错syntaxerror_SyntaxError: invalid syntax python错误解决方法
今天爱分享给大家带来SyntaxError: invalid syntax python错误解决方法,希望能够帮助到大家. "SyntaxError: invalid syntax" ...
- php try报错程序中断,php7异常与错误处理和自定义异常
7.2版本异常与错误的概述 什么叫做异常? 异常是指程序运行中不符合预期情况以及与正常流程不同的状况. 比如你链接数据库,在参数都写上去的条件下,发现链接不上去,这就属于不符合预期. 可以被 try- ...
- eclipse找不到java方法,Linux启动eclipse报错找不到java环境解决方法
在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Eclipse 3.6 在 linux mint 12 可以在终端顺利启动Eclipse,但是鼠标双击,或者用起 ...
- IDEA报错:类文件具有错误的版本 61.0,应为52.0
springboot项目启动报错: 类文件具有错误的版本 61.0,应为52.0 请删除该文件或确保该文件位于正确的类路径子目录中 查阅了网上的很多资料,普遍原因说是springboot版本过高,高于 ...
- NC65 对上年度反结账,调整数据后重新结账后,对本年度年初重算时系统报错:更新记数错误。
1.对上年度反结账,调整数据后重新结账后,对本年度年初重算时系统报错:更新记数错误. 解决方案: 1.在期初余额节点,按Ctrl+ALT+A重建期初凭证: 2.到结账节点,重建余额表,选择有问题的财务 ...
- 【笔记】虚拟机用Xshell登陆报错“ssh服务器拒绝了密码”解决方法
[笔记]虚拟机用Xshell登陆报错"ssh服务器拒绝了密码"解决方法 参考文章: (1)[笔记]虚拟机用Xshell登陆报错"ssh服务器拒绝了密码"解决方法 ...
- eclipse中同步代码PULL报错checkout conflict with files的解决方法
eclipse中同步代码PULL报错checkout conflict with files的解决方法 参考文章: (1)eclipse中同步代码PULL报错checkout conflict wit ...
最新文章
- K8S 最佳实践-映射外部服务 Endpoints / ExternalName
- 生成跨语言的类型声明和接口绑定的工具(Djinni )
- python谁是卧底游戏流程图_虎牙小程序—谁是卧底 |明星互动游戏
- Visual Studio上开发Python?你不可不知道的六大功能!
- 【Python爬虫】网络爬虫的“盗亦有道”
- (转)PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示...
- iis asp mysql json_asp返回json数据,asp接口编写
- C3D实现ucf101人体行为识别代码知识总结
- AI机器人AI源码营销机器人电销机器人智能电话机器人拨号机器人语音机器人空号识别FreeSWITCH呼叫中心中间ipbxIPBX科大识别阿里识别语音识别语音翻译
- sass和compass学习笔记
- PPT 将图片的白色部分透明化
- 遍历文件夹(含子文件夹)方法
- 集效率之大成的EfficientNet
- forEach、for…in、 for…of 的区别
- PDF分割成两页怎么弄?来看看这3个工具
- C++词法记号规则之标识符 关键字 操作符 分隔符 空白符
- python二级操作题分值_计算机二级MS Office考试具体内容及分值
- 计算机学院篮球队英文名称,【体育文化节】计算机学院研究生代表队获得篮球联赛冠军...
- 【k8s系列十二】k8s 之 Service的类型
- python批量自动订票_python+splinter实现12306网站刷票并自动购票流程