Files
jiebanke/mini-program/api/index.js
2025-08-30 14:33:49 +08:00

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