class Request { constructor(baseURL = 'https://api.huashengtec.com') { //constructor(baseURL = 'http://127.0.0.1:9004') { this.baseURL = baseURL } async request(options) { const { url, method = 'GET', data = {}, header = {}, skipAuthWait = false, ...rest } = options // 等待登录完成后再携带 token,避免页面请求早于 app.js 登录的竞态 // skipAuthWait: 登录请求自身使用,否则会等待自己导致死锁 let token = '' try { const app = getApp() if (skipAuthWait) { token = app?.globalData?.user?.security?.token || '' } else if (app && app.ensureLogin) { const user = await app.ensureLogin() token = user?.security?.token || '' } else { token = app?.globalData?.user?.security?.token || '' } } catch (e) { // 登录失败仍继续请求,由服务端返回未授权错误 } return new Promise((resolve, reject) => { data.appId = 'wxapp-escort-admin' wx.request({ url: url.startsWith('http') ? url : `${this.baseURL}${url}`, method, data, header: { 'Content-Type': 'application/json', ...(token ? { 'token': token } : {}), ...header }, ...rest, success: (res) => { if (res.statusCode >= 200 && res.statusCode < 300) { resolve(res.data) } else { reject(new Error(`HTTP ${res.statusCode}`)) } }, fail: (err) => { reject(err) } }) }) } get(url, params = {}, options = {}) { return this.request({ url, method: 'GET', data: params, ...options }) } post(url, data = {}, options = {}) { return this.request({ url, method: 'POST', data, ...options }) } put(url, data = {}, options = {}) { return this.request({ url, method: 'PUT', data, ...options }) } patch(url, data = {}, options = {}) { return this.request({ url, method: 'PATCH', data, ...options }) } delete(url, data = {}, options = {}) { return this.request({ url, method: 'DELETE', data, ...options }) } } const request = new Request() module.exports = request