99 lines
2.2 KiB
JavaScript
99 lines
2.2 KiB
JavaScript
// API模块主入口
|
|
import request from './request.js'
|
|
import * as services from './services.js'
|
|
|
|
// 导出所有服务
|
|
export * from './services.js'
|
|
|
|
// 导出请求实例
|
|
export { request }
|
|
|
|
// 默认导出
|
|
export default {
|
|
// 请求实例
|
|
request,
|
|
|
|
// 所有服务
|
|
...services,
|
|
|
|
// 工具函数
|
|
utils: services.apiUtils,
|
|
|
|
// 初始化配置
|
|
init(config = {}) {
|
|
// 可以在这里进行一些初始化配置
|
|
console.log('API模块初始化完成', config)
|
|
},
|
|
|
|
// 设置认证token
|
|
setAuthToken(token) {
|
|
uni.setStorageSync('token', token)
|
|
},
|
|
|
|
// 获取认证token
|
|
getAuthToken() {
|
|
return uni.getStorageSync('token')
|
|
},
|
|
|
|
// 清除认证信息
|
|
clearAuth() {
|
|
uni.removeStorageSync('token')
|
|
uni.removeStorageSync('refreshToken')
|
|
},
|
|
|
|
// 检查是否已登录
|
|
isLoggedIn() {
|
|
return !!this.getAuthToken()
|
|
},
|
|
|
|
// 统一错误处理
|
|
handleError(error, defaultMessage = '操作失败') {
|
|
const errorMessage = error.message || defaultMessage
|
|
const errorCode = error.code || 'UNKNOWN_ERROR'
|
|
|
|
// 可以根据错误码进行不同的处理
|
|
switch (errorCode) {
|
|
case 'UNAUTHORIZED':
|
|
this.clearAuth()
|
|
uni.navigateTo({ url: '/pages/auth/login' })
|
|
break
|
|
case 'NETWORK_ERROR':
|
|
uni.showToast({ title: '网络连接失败', icon: 'none' })
|
|
break
|
|
default:
|
|
uni.showToast({ title: errorMessage, icon: 'none' })
|
|
}
|
|
|
|
return { error: true, code: errorCode, message: errorMessage }
|
|
},
|
|
|
|
// 请求包装器,自动处理错误
|
|
async withErrorHandling(promise, successMessage = '操作成功') {
|
|
try {
|
|
const result = await promise
|
|
if (successMessage) {
|
|
uni.showToast({ title: successMessage, icon: 'success' })
|
|
}
|
|
return { success: true, data: result }
|
|
} catch (error) {
|
|
return this.handleError(error)
|
|
}
|
|
}
|
|
}
|
|
|
|
// 自动初始化
|
|
const api = {
|
|
request,
|
|
...services
|
|
}
|
|
|
|
// 全局错误处理
|
|
const originalRequest = uni.request
|
|
uni.request = function(config) {
|
|
return originalRequest.call(this, config).catch(error => {
|
|
console.error('请求失败:', error)
|
|
throw error
|
|
})
|
|
}
|
|
|
|
export default api |