├── php-api/ # 改造后的PHP接口层 ├── java-ad-service/ # 若依框架微服务(广告+VIP+分账) ├── uniapp-reader/ # UniApp前端项目 │ ├── pages/ # 各端页面 │ └──
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // src/utils/request.js
  2. import config from '@/config'
  3. import { getToken, removeToken } from '@/utils/auth'
  4. import { toast, showConfirm, tansParams } from '@/utils/common'
  5. // 移除对 store 的依赖
  6. const request = (configObj = {}) => {
  7. // 确保配置对象有效
  8. configObj.header = configObj.header || {}
  9. // 获取token - 只从本地存储获取
  10. const token = getToken() || ''
  11. // 仅当token存在且未明确禁止时才添加
  12. if (token && configObj.header.isToken !== false) {
  13. configObj.header['Authorization'] = 'Bearer ' + token
  14. } else if (!token) {
  15. console.log('请求未携带Token: 未登录状态访问公开API', configObj.url)
  16. }
  17. // 完整URL处理
  18. let fullUrl = configObj.url
  19. if (!fullUrl.startsWith('http')) {
  20. fullUrl = (configObj.baseUrl || config.baseUrl || '') + fullUrl
  21. }
  22. return new Promise((resolve, reject) => {
  23. uni.request({
  24. method: configObj.method || 'get',
  25. url: fullUrl,
  26. data: configObj.data,
  27. header: configObj.header,
  28. success: (res) => {
  29. // 处理401认证失败
  30. if (res.statusCode === 401) {
  31. const errorMsg = res.data?.msg || '认证失败,请重新登录'
  32. console.warn('认证失败:', configObj.url, errorMsg)
  33. // 清除无效token
  34. removeToken()
  35. // 显示登录提示
  36. toast(errorMsg)
  37. // 跳转到登录页面
  38. uni.navigateTo({ url: '/pages/login' })
  39. reject(new Error(errorMsg))
  40. }
  41. // 处理其他成功响应
  42. else if (res.statusCode >= 200 && res.statusCode < 300) {
  43. resolve(res.data)
  44. }
  45. // 处理其他错误
  46. else {
  47. const errorMsg = res.data?.msg || `请求失败 (${res.statusCode})`
  48. toast(errorMsg)
  49. reject(new Error(errorMsg))
  50. }
  51. },
  52. fail: (err) => {
  53. let message = '网络连接异常'
  54. if (err.errMsg.includes('timeout')) message = '请求超时'
  55. toast(message)
  56. reject(err)
  57. }
  58. })
  59. })
  60. }
  61. // 添加便捷方法
  62. request.get = (url, params, config = {}) => {
  63. return request({
  64. url,
  65. params,
  66. method: 'get',
  67. ...config
  68. })
  69. }
  70. request.post = (url, data, config = {}) => {
  71. return request({
  72. url,
  73. data,
  74. method: 'post',
  75. ...config
  76. })
  77. }
  78. export default request