42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
const app = getApp()
|
|
|
|
function unwrap(data) {
|
|
if (data && typeof data === 'object' && 'code' in data && 'data' in data) {
|
|
return data.data
|
|
}
|
|
return data
|
|
}
|
|
|
|
function request({ url, method = 'GET', data = {}, header = {} }) {
|
|
return new Promise((resolve, reject) => {
|
|
const app = getApp()
|
|
if (app.globalData.token) {
|
|
header['Authorization'] = `Bearer ${app.globalData.token}`
|
|
}
|
|
wx.request({
|
|
url: `${app.globalData.baseUrl}${url.startsWith('/') ? '' : '/'}${url}`,
|
|
method,
|
|
data,
|
|
header,
|
|
success: (res) => {
|
|
// Check HTTP status code
|
|
if (res.statusCode >= 200 && res.statusCode < 300) {
|
|
// Check logical code from backend wrapper
|
|
if (res.data && typeof res.data === 'object' && 'code' in res.data) {
|
|
if (res.data.code < 200 || res.data.code >= 300) {
|
|
reject(res.data)
|
|
return
|
|
}
|
|
}
|
|
resolve(unwrap(res.data))
|
|
} else {
|
|
reject(res)
|
|
}
|
|
},
|
|
fail: (err) => reject(err)
|
|
})
|
|
})
|
|
}
|
|
|
|
module.exports = { request }
|