| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- const BASE_URL = 'https://your-api-domain.com';
- let isRedirectingToLogin = false;
- function getToken() {
- return uni.getStorageSync('token') || '';
- }
- function redirectToLogin() {
- if (isRedirectingToLogin) return;
- isRedirectingToLogin = true;
- uni.showToast({ title: '登录已失效,请重新登录', icon: 'none', duration: 1500 });
- setTimeout(() => {
- isRedirectingToLogin = false;
- uni.reLaunch({ url: '/pages/login/login' });
- }, 1500);
- }
- function request(options = {}) {
- const { url, method = 'GET', data = {}, header = {} } = options;
- const token = getToken();
- const headers = {
- 'Content-Type': 'application/json',
- ...(token ? { Authorization: 'Bearer ' + token } : {}),
- ...header
- };
- return new Promise((resolve, reject) => {
- uni.request({
- url: BASE_URL + url,
- method,
- data,
- header: headers,
- success(res) {
- const { code, msg, data, total, rows } = res.data;
- if (code === 200) {
- const result = {};
- if (data !== undefined) result.data = data;
- if (total !== undefined) result.total = total;
- if (rows !== undefined) result.rows = rows;
- resolve(result);
- } else if (code === 401) {
- redirectToLogin();
- reject(new Error('登录已失效'));
- } else if (code === 500) {
- reject(new Error(msg));
- } else {
- reject(new Error(msg || '请求失败'));
- }
- },
- fail(err) {
- const message = err.errMsg || '网络请求失败';
- uni.showToast({ title: message, icon: 'none' });
- reject(new Error(message));
- }
- });
- });
- }
- export default request;
|