├── php-api/ # 改造后的PHP接口层 ├── java-ad-service/ # 若依框架微服务(广告+VIP+分账) ├── uniapp-reader/ # UniApp前端项目 │ ├── pages/ # 各端页面 │ └──
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

request.js 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // src/utils/request.js
  2. import config from '@/config'
  3. import { getToken } from '@/utils/auth'
  4. import { toast, showConfirm, tansParams } from '@/utils/common'
  5. const baseUrl = config.baseUrl
  6. let timeout = 10000
  7. const request = (configObj) => { // 重命名参数为 configObj
  8. // 确保传入的配置对象有效
  9. configObj = configObj || {}
  10. configObj.header = configObj.header || {}
  11. // 处理 token
  12. const token = getToken()
  13. // 只有存在token且未明确禁止携带token时才添加
  14. if (token && configObj.header.isToken !== false) {
  15. configObj.header['Authorization'] = 'Bearer ' + token
  16. } else if (!token) {
  17. console.warn('请求未携带Token:', configObj.url)
  18. }
  19. // GET 请求参数处理
  20. if (configObj.params) {
  21. let url = configObj.url + '?' + tansParams(configObj.params)
  22. url = url.slice(0, -1)
  23. configObj.url = url
  24. }
  25. return new Promise((resolve, reject) => {
  26. uni.request({
  27. method: configObj.method || 'get',
  28. timeout: configObj.timeout || timeout,
  29. url: (configObj.baseUrl || baseUrl) + configObj.url,
  30. data: configObj.data,
  31. header: configObj.header,
  32. dataType: 'json',
  33. success: (res) => {
  34. // 处理401认证失败
  35. if (res.statusCode === 401) {
  36. // 更友好的错误处理
  37. const errorMsg = res.data?.msg || '认证失败,请重新登录';
  38. console.warn('认证失败:', configObj.url, errorMsg);
  39. // 显示提示但不强制跳转
  40. toast(errorMsg);
  41. // 清除无效token
  42. if (token) {
  43. uni.removeStorageSync('token');
  44. localStorage.removeItem('token');
  45. }
  46. reject(new Error(errorMsg));
  47. } else if (res.statusCode === 200) {
  48. resolve(res.data);
  49. } else {
  50. reject(res.data);
  51. }
  52. },
  53. fail: (err) => {
  54. let message = '后端接口连接异常'
  55. if (err.errMsg.includes('timeout')) {
  56. message = '请求超时'
  57. }
  58. toast(message)
  59. reject(err)
  60. }
  61. })
  62. })
  63. }
  64. // 添加便捷方法
  65. request.get = (url, params, config = {}) => {
  66. return request({
  67. url,
  68. params,
  69. method: 'get',
  70. ...config
  71. })
  72. }
  73. request.post = (url, data, config = {}) => {
  74. return request({
  75. url,
  76. data,
  77. method: 'post',
  78. ...config
  79. })
  80. }
  81. export default request