Publish Mini Program Dev Version / publish (push) Successful in 1m2s
- wiki 页节气详情排版:配图圆角阴影、涵义引言(米黄渐变+红竖条)、 简介两端对齐、结构化字段列表(红点标签)分块展示 - wiki.js 提取 meaning 单独展示,extraList 排除避免重复 - request.js develop 环境指向线上(本地 8080 被占用且 localhost 受域名校验限制) - project.config.json 关闭 urlCheck 便于本地开发连线上调试
86 lines
2.3 KiB
JavaScript
86 lines
2.3 KiB
JavaScript
// 网络请求封装
|
|
// 按小程序运行环境自动切换后端地址:
|
|
// - develop(开发者工具):连线上数据(本地 8080 被其他服务占用,且 localhost 受域名校验限制)
|
|
// - trial/release(体验版/正式版):生产域名(需在微信公众平台配置为 request 合法域名)
|
|
const API_HOSTS = {
|
|
develop: 'https://lunar.neatcn.com',
|
|
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,
|
|
};
|