68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
|
|
/**
|
||
|
|
* 小程序请求封装
|
||
|
|
* Mini Program Request Wrapper
|
||
|
|
*/
|
||
|
|
|
||
|
|
const BASE_URL = 'https://api.example.com'
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 请求封装
|
||
|
|
*/
|
||
|
|
const request = (options) => {
|
||
|
|
return new Promise((resolve, reject) => {
|
||
|
|
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
|
||
|
|
},
|
||
|
|
timeout: options.timeout || 10000,
|
||
|
|
|
||
|
|
success(res) {
|
||
|
|
if (res.statusCode === 200) {
|
||
|
|
if (res.data.code === 0) {
|
||
|
|
resolve(res.data)
|
||
|
|
} else if (res.data.code === 401) {
|
||
|
|
// Token 过期
|
||
|
|
wx.removeStorageSync('token')
|
||
|
|
wx.removeStorageSync('userInfo')
|
||
|
|
wx.navigateTo({ url: '/pages/login/login' })
|
||
|
|
reject(res.data)
|
||
|
|
} else {
|
||
|
|
wx.showToast({ title: res.data.message || '请求失败', icon: 'none' })
|
||
|
|
reject(res.data)
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
wx.showToast({ title: `请求失败: ${res.statusCode}`, icon: 'none' })
|
||
|
|
reject(new Error(`HTTP ${res.statusCode}`))
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
fail(err) {
|
||
|
|
wx.showToast({ title: '网络异常', icon: 'none' })
|
||
|
|
reject(err)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// 便捷方法
|
||
|
|
request.get = (url, data, options = {}) =>
|
||
|
|
request({ url, method: 'GET', data, ...options })
|
||
|
|
|
||
|
|
request.post = (url, data, options = {}) =>
|
||
|
|
request({ url, method: 'POST', data, ...options })
|
||
|
|
|
||
|
|
request.put = (url, data, options = {}) =>
|
||
|
|
request({ url, method: 'PUT', data, ...options })
|
||
|
|
|
||
|
|
request.delete = (url, data, options = {}) =>
|
||
|
|
request({ url, method: 'DELETE', data, ...options })
|
||
|
|
|
||
|
|
module.exports = request
|