首页 技术 正文
技术 2022年11月21日
0 收藏 300 点赞 5,041 浏览 3508 个字

封装一:

'use strict'import axios from 'axios'
import qs from 'qs'
import NProgress from 'nprogress'
import vm from '../main'axios.interceptors.request.use(config => { //利用拦截器做预处理
// 这里可以加一些动作, 比如来个进度条开始动作,
NProgress.start()
return config
}, error => {
return Promise.reject(error)
})axios.interceptors.response.use(response => response, error => Promise.resolve(error.response)) // 这里我们把错误信息扶正, 后面就不需要写 catch 了//处理来自网络或者服务器的错误
function checkStatus(response) {
NProgress.done() // if (response.status == 666) {
// localStorage.clear();
// this.$router.push('/')
// }
// 如果 http 状态码正常, 则直接返回数据
// 200请求成功 304浏览器缓存
if (response.status === 200 || response.status === 304 || response.status == 400) {
return response
}
if (response.status == 401) {
console.log("token错误");
vm.$router.push("/");
return response
}
// 异常状态下, 把错误信息返回去
// 因为前面我们把错误扶正了, 不然像 404, 500 这样的错误是走不到这里的
return {
data: {
code: -404,
message: response.statusText,
data: response.statusText,
}
}
}
//处理来自程序端的错误,
function checkCode(res) { // 如果状态 code 异常(这里已经包括网络错误, 服务器错误, 后端抛出的错误), 可以弹出一个错误提示, 告诉用户
if ((res.data.code || res.data.Code) && res.data.code !== 1000) {
//登录超时--重新登录
if (res.data.code === 1100) {
//alert("会话过期...,请重新登录...")
vm.$router.push('/')
} else if (res.data.Code === 1500) {
vm.$message.error({
message: res.data.Error,
type: "error"
});
} else {
vm.$message.error({ message: '服务器开小差了,请稍后再试', type: "error" });
}
}
return res;
}export default {
post(url, data) {
const token = JSON.parse(localStorage.getItem("token")) return axios({
method: 'post', //请求协议
url, //请求地址
data: qs.stringify(data), //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
postList(url, data) {
const token = JSON.parse(localStorage.getItem("token"));
return axios({
method: 'post', //请求协议
url, //请求地址
data: data, //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
get(url, params) {
const token = JSON.parse(localStorage.getItem("token"));
return axios({
method: 'get', //请求协议
url, //请求地址
params, //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
delete(url, params) {
const token = JSON.parse(localStorage.getItem("token"));
return axios({
method: 'delete', //请求协议
url, //请求地址
params, //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
put(url, data) {
const token = JSON.parse(localStorage.getItem("token"))
return axios({
method: 'put', //请求协议
url, //请求地址
data: qs.stringify(data), //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
putList(url, data) {
const token = JSON.parse(localStorage.getItem("token"))
return axios({
method: 'put', //请求协议
url, //请求地址
data: data, //请求的数据
timeout: 60000, //超时时间---单位是毫秒
headers: {
'Authorization': token ? token.token_type + ' ' + token.access_token : '',
'X-Requested-With': 'XMLHttpRequest',
// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'AJAX_FLAG': ' TRUE'
} //请求头
}).then(checkStatus).then(checkCode)
},
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893