78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
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 |