| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // src/utils/request.js
- import config from '@/config'
- import { getToken, removeToken } from '@/utils/auth'
- import { toast, showConfirm, tansParams } from '@/utils/common'
-
- // 移除对 store 的依赖
- const request = (configObj = {}) => {
- // 确保配置对象有效
- configObj.header = configObj.header || {}
-
- // 获取token - 只从本地存储获取
- const token = getToken() || ''
-
- // 仅当token存在且未明确禁止时才添加
- if (token && configObj.header.isToken !== false) {
- configObj.header['Authorization'] = 'Bearer ' + token
- } else if (!token) {
- console.log('请求未携带Token: 未登录状态访问公开API', configObj.url)
- }
-
- // 完整URL处理
- let fullUrl = configObj.url
- if (!fullUrl.startsWith('http')) {
- fullUrl = (configObj.baseUrl || config.baseUrl || '') + fullUrl
- }
-
- return new Promise((resolve, reject) => {
- uni.request({
- method: configObj.method || 'get',
- url: fullUrl,
- data: configObj.data,
- header: configObj.header,
- success: (res) => {
- // 处理401认证失败
- if (res.statusCode === 401) {
- const errorMsg = res.data?.msg || '认证失败,请重新登录'
- console.warn('认证失败:', configObj.url, errorMsg)
-
- // 清除无效token
- removeToken()
-
- // 显示登录提示
- toast(errorMsg)
-
- // 跳转到登录页面
- uni.navigateTo({ url: '/pages/login' })
-
- reject(new Error(errorMsg))
- }
- // 处理其他成功响应
- else if (res.statusCode >= 200 && res.statusCode < 300) {
- resolve(res.data)
- }
- // 处理其他错误
- else {
- const errorMsg = res.data?.msg || `请求失败 (${res.statusCode})`
- toast(errorMsg)
- reject(new Error(errorMsg))
- }
- },
- fail: (err) => {
- let message = '网络连接异常'
- if (err.errMsg.includes('timeout')) message = '请求超时'
- toast(message)
- reject(err)
- }
- })
- })
- }
-
- // 添加便捷方法
- request.get = (url, params, config = {}) => {
- return request({
- url,
- params,
- method: 'get',
- ...config
- })
- }
-
- request.post = (url, data, config = {}) => {
- return request({
- url,
- data,
- method: 'post',
- ...config
- })
- }
-
- export default request
|