92 lines
3.2 KiB
JavaScript
Raw Normal View History

2025-03-11 09:45:29 +08:00
// common/http.js
import _config from './config'; // 导入私有配置
import service from './service'; // 这里是之前项目配置本地存储账号信息的,不需要可以删除
import store from '../store'; // 引入 Vuex store
export default function $http(options) {
// 从 Vuex store 中获取后端地址
const backendUrl = store.state.backendUrl;
// 进行url字符串拼接
options.url = backendUrl + options.url;
console.log(options.url);
return new Promise((resolve, reject) => {
// 拦截请求
_config.header.Authorization = service.getToken(); // 这里是调用本地存储配置文件的方法,不需要可以改下面这种方式
_config.header['Content-type'] = 'application/json;charset=utf-8';
// _config.header['Content-type'] = 'application/x-www-form-urlencoded;charset=utf-8'
// _config.header.Authorization = uni.getStorageSync(STATE_KEY);
uni.request({
..._config,
...options,
complete: (response) => {
console.log(response);
// 登录失效这边后台是返回403看情况
if (response.data.code === 403) {
// 返回登录界面
uni.navigateTo({
url: '/pages/login/login'
});
uni.showToast({
icon: 'none',
title: '登录已失效'
});
// 清空token
service.addToken('');
}
// request 请求访问成功 这里返回的时候response.data才是请求返回的结果errorCode
if (response.data.code === 200 || response.data.status === "success") {
resolve(response.data);
} else {
// 接口请求失败
resolve(response.data);
// console.log(response.data)
// 处理catch 请求,不在本页面之外处理,统一在这里处理
if (options.handle) {
reject(response);
} else {
try {
Promise.reject(response).catch(err => {
// console.error(err);
_page_error(response.statusCode || response.errMsg);
});
} catch (e) {
console.log(e);
}
}
}
}
});
});
}
// 接口錯誤
function _error(err, msg = '') {
switch (err) {
case 400:
console.error(msg);
// 错误码400的处理方式
break;
}
}
// request 錯誤
function _page_error(err) {
switch (err) {
case 401:
// 错误码401的处理方式
console.error("请求被拒绝");
break;
case 404:
// 错误码404的处理方式
console.error("没有找到页面");
break;
case 405:
console.error("错误的请求");
break;
}
}