bookworm-smart-assistant/skills/miniprogram-expert/scripts/request.js

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