api响应拦截器
import { getStorage, removeStorage } from "@/utils/storage.js"
let apiUrl = 'https://lsm.liandu.gov.cn:2020';
const responeCode = ["AUTH.RESOURCE.E0001", "AUTH.RESOURCE.E0002"];
const baseRequest = (url, params, xmodule = '/lsm-service', method = 'POST') => {
return new Promise((resolve, reject) => {
uni.request({
url: apiUrl + xmodule + url, //测试接口
method,
data: params,
header: {
access_token: getStorage() || ''
},
}).then((response) => {
let [error, res] = response;
let result = res.data
if (result.success === false) {
if (responeCode.includes(result.errorCode)) {
uni.showToast({
title: `登录信息过期,请重新登录!`,
icon: 'none',
duration: 2000
});
setTimeout(() => {
removeStorage()
uni.reLaunch({
url: '/pages/login/index'
})
}, 1500);
} else if (result.errorCode === "validator") {
let messageData = "";
if (result.attachments.errors && result.attachments.errors.length) {
result.attachments.errors.forEach(s => (messageData = messageData.concat(`${s.message}`)));
uni.showToast({
title: messageData,
icon: 'none',
duration: 2000
});
}
} else {
uni.showToast({
title: result.exceptionContent || "连接失败,请重试!",
icon: 'none',
duration: 2000
});
}
}
resolve(result);
}).catch(error => {
uni.showToast({
icon: 'none',
title: '服务器错误!',
duration: 2000
})
let [err, res] = error;
reject(err);
});
})
};
export default {
baseRequest
}
main.js 原型挂载
import api from './api'
Vue.prototype.$api = api.baseRequest;
使用
this.$api('',{}).then(res=>{}).catch(err->{})