【私域操盘手】 操盘手端UI
This commit is contained in:
132
Cunkebao/utils/request.js
Normal file
132
Cunkebao/utils/request.js
Normal file
@@ -0,0 +1,132 @@
|
||||
import Auth from './auth';
|
||||
|
||||
// 服务器地址
|
||||
const BASE_URL = process.env.NODE_ENV === 'development'
|
||||
? 'http://localhost:8080'
|
||||
: 'https://api.example.com';
|
||||
|
||||
// 请求超时时间
|
||||
const TIMEOUT = 10000;
|
||||
|
||||
/**
|
||||
* 请求拦截器
|
||||
* @param {Object} config 请求配置
|
||||
* @returns {Object} 处理后的请求配置
|
||||
*/
|
||||
function requestInterceptor(config) {
|
||||
// 获取 token
|
||||
const token = uni.getStorageSync('token');
|
||||
|
||||
// 如果有 token,则带上请求头
|
||||
if (token) {
|
||||
config.header = {
|
||||
...config.header,
|
||||
'Authorization': `Bearer ${token}`
|
||||
};
|
||||
}
|
||||
|
||||
// 打印请求日志
|
||||
console.log('请求地址:', `${config.baseURL || BASE_URL}${config.url}`);
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
/**
|
||||
* 响应拦截器
|
||||
* @param {Object} response 响应数据
|
||||
* @returns {Object|Promise} 处理后的响应数据或Promise
|
||||
*/
|
||||
function responseInterceptor(response) {
|
||||
// 未登录或token失效 - 取消登录拦截
|
||||
if (response.data.code === 401) {
|
||||
// 只在控制台打印信息,不进行拦截
|
||||
console.log('登录已过期,但不进行拦截');
|
||||
|
||||
/*
|
||||
// 以下代码已注释,取消登录拦截
|
||||
// 清除登录信息
|
||||
Auth.removeToken();
|
||||
Auth.removeUserInfo();
|
||||
|
||||
// 跳转到登录页
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index'
|
||||
});
|
||||
|
||||
return Promise.reject(new Error('登录已过期,请重新登录'));
|
||||
*/
|
||||
|
||||
// 直接返回响应,不拦截
|
||||
return response.data;
|
||||
}
|
||||
|
||||
// token需要刷新 - 取消登录拦截
|
||||
if (response.data.code === 410) {
|
||||
// 只在控制台打印信息,不进行拦截
|
||||
console.log('Token需要刷新,但不进行拦截');
|
||||
|
||||
/*
|
||||
// 以下代码已注释,取消登录拦截
|
||||
// 处理token刷新逻辑,这里简化处理
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index'
|
||||
});
|
||||
|
||||
return Promise.reject(new Error('登录已过期,请重新登录'));
|
||||
*/
|
||||
|
||||
// 直接返回响应,不拦截
|
||||
return response.data;
|
||||
}
|
||||
|
||||
return response.data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一请求函数
|
||||
* @param {Object} options 请求选项
|
||||
* @returns {Promise} 请求结果
|
||||
*/
|
||||
function request(options) {
|
||||
// 合并请求选项
|
||||
const config = {
|
||||
baseURL: BASE_URL,
|
||||
timeout: TIMEOUT,
|
||||
header: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
...options
|
||||
};
|
||||
|
||||
// 请求拦截
|
||||
const interceptedConfig = requestInterceptor(config);
|
||||
|
||||
// 发起请求
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: `${interceptedConfig.baseURL}${interceptedConfig.url}`,
|
||||
method: interceptedConfig.method || 'GET',
|
||||
data: interceptedConfig.data,
|
||||
header: interceptedConfig.header,
|
||||
timeout: interceptedConfig.timeout,
|
||||
success: (res) => {
|
||||
try {
|
||||
const result = responseInterceptor(res);
|
||||
resolve(result);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
uni.showToast({
|
||||
title: '网络请求失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
});
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export default request;
|
||||
Reference in New Issue
Block a user