Files
lunar-mini/mini/utils/request.js
T
gouki f90b7c7764 fix(mini): BASE_URL 按运行环境自动切换
- develop 走本地开发服务,trial/release 走 https://lunar.neatcn.com(原为硬编码 localhost:8080,线上无法连通)
- 401 时清除失效 token 交由页面引导重新登录,不再跳转设置页
- 补交 version-badge 组件源码
2026-08-09 00:10:05 +00:00

86 lines
2.2 KiB
JavaScript

// 网络请求封装
// 按小程序运行环境自动切换后端地址:
// - develop(开发者工具):本地开发服务
// - trial/release(体验版/正式版):生产域名(需在微信公众平台配置为 request 合法域名)
const API_HOSTS = {
develop: 'http://localhost:8080',
trial: 'https://lunar.neatcn.com',
release: 'https://lunar.neatcn.com',
};
function resolveBaseUrl() {
try {
const envVersion = wx.getAccountInfoSync().miniProgram.envVersion;
return API_HOSTS[envVersion] || API_HOSTS.release;
} catch (e) {
return API_HOSTS.release;
}
}
const BASE_URL = resolveBaseUrl();
// 请求拦截器
function request(options) {
return new Promise((resolve, reject) => {
// 获取 token
const token = wx.getStorageSync('token');
wx.request({
url: BASE_URL + options.url,
method: options.method || 'GET',
data: options.data || {},
header: {
'Content-Type': 'application/json',
'Authorization': token ? `Bearer ${token}` : '',
...options.header,
},
success: (res) => {
if (res.statusCode === 200) {
resolve(res.data);
} else if (res.statusCode === 401) {
// 未授权:清除失效 token,由页面引导重新登录
wx.removeStorageSync('token');
reject(new Error('未授权'));
} else {
reject(new Error(res.data.msg || '请求失败'));
}
},
fail: (err) => {
console.error('请求失败:', err);
reject(err);
},
});
});
}
// 上传文件
function uploadFile(options) {
return new Promise((resolve, reject) => {
const token = wx.getStorageSync('token');
wx.uploadFile({
url: BASE_URL + options.url,
filePath: options.filePath,
name: options.name || 'file',
header: {
'Authorization': token ? `Bearer ${token}` : '',
},
formData: options.formData || {},
success: (res) => {
if (res.statusCode === 200) {
resolve(JSON.parse(res.data));
} else {
reject(new Error('上传失败'));
}
},
fail: reject,
});
});
}
module.exports = {
request,
uploadFile,
BASE_URL,
};