import {wxToPromise} from "./wx"; import config from "../model/config"; import Route from "../model/route"; import User from "../model/user"; import {showLoading, toast} from "./utils"; import storage from "./storage"; const app = getApp(); class Http { //T 可以通过重写errorHandler来覆盖默认的网络错误处理 static async request({url, data, method = 'get', opt = {isLoading: false}}, errorHandler = async (code, msg) => { if (code == 401) { await User.logout(); Route.redirectLogin(); } const title = Http._showError(code, msg) throw new Error(title) }) { const isLoading = opt.isLoading; if (isLoading) { showLoading(); } let res try { let tokenObj = {}; if (app.globalData.token) { tokenObj.Authorization = app.globalData.token; } res = await wxToPromise('request', { url: `${config.API}${url}`, data, method, header: { 'content-type': 'application/json', ...tokenObj } }) } catch (e) { console.log('网络错误', e); // 代码逻辑异常、无网络、请求超时会走这里 await errorHandler(-100) } if (isLoading) { wx.hideLoading() } if (res.statusCode == 200) { if (res.data.code == 200) { console.log(`网络请求${url}`, data, res.data); return res.data; }else { await errorHandler(res.data.code, res.data.msg, res.data.data); } } else { await errorHandler(res.statusCode) } } static _showError(errorCode, message = '') { const errorMessage = config.ERROR_MSG[errorCode]; const title = errorMessage || message || '未知异常' console.log("错误提示", title) wx.showToast({ title, icon: 'none', duration: 3000 }) return title; } } export default Http