├── php-api/ # 改造后的PHP接口层 ├── java-ad-service/ # 若依框架微服务(广告+VIP+分账) ├── uniapp-reader/ # UniApp前端项目 │ ├── pages/ # 各端页面 │ └──
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

request.js 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // src/utils/request.js
  2. import config from '@/config'
  3. const baseUrl = config.baseUrl
  4. // 使用直接导出的函数,避免 this 上下文问题
  5. export function get(url, params = {}, options = {}) {
  6. return request('GET', url, params, options)
  7. }
  8. export function post(url, data = {}, options = {}) {
  9. return request('POST', url, data, options)
  10. }
  11. function request(method, url, data = {}, options = {}) {
  12. return new Promise((resolve, reject) => {
  13. // 处理路径
  14. let finalUrl = url;
  15. // 特殊处理 Java API
  16. if (url.startsWith('/java-api')) {
  17. finalUrl = url
  18. }
  19. // 普通 API 处理
  20. else if (!url.startsWith('http')) {
  21. // 确保只有一个 /api 前缀
  22. if (!url.startsWith('/api')) {
  23. finalUrl = '/api' + (url.startsWith('/') ? url : `/${url}`);
  24. }
  25. }
  26. const baseUrl = process.env.VUE_APP_BASE_API || '/';
  27. const fullUrl = baseUrl + finalUrl;
  28. console.log('请求URL:', fullUrl, '方法:', method);
  29. uni.request({
  30. url: fullUrl,
  31. method,
  32. data,
  33. header: {
  34. 'Content-Type': 'application/json',
  35. ...(options.headers || {})
  36. },
  37. success: (res) => {
  38. console.log('API响应:', res);
  39. // 处理未授权情况
  40. if (res.statusCode === 401) {
  41. uni.showToast({
  42. title: '请先登录',
  43. icon: 'none'
  44. });
  45. uni.navigateTo({
  46. url: '/pages/login'
  47. });
  48. reject(new Error('未授权访问'));
  49. return;
  50. }
  51. // 统一处理成功响应
  52. if (res.statusCode >= 200 && res.statusCode < 300) {
  53. resolve(res.data)
  54. } else {
  55. // 尝试提取错误消息
  56. const errorMsg = res.data?.msg || res.data?.message || '请求失败';
  57. reject(new Error(errorMsg))
  58. }
  59. },
  60. fail: (err) => {
  61. console.error('请求失败:', err);
  62. reject(err)
  63. }
  64. })
  65. })
  66. }
  67. service.interceptors.request.use(config => {
  68. // 从Vuex或localStorage获取token
  69. const token = store.state.token || localStorage.getItem('token');
  70. if (token) {
  71. config.headers['Authorization'] = `Bearer ${token}`;
  72. }
  73. return config;
  74. }, error => {
  75. return Promise.reject(error);
  76. });
  77. // 导出对象以兼容旧代码
  78. export default {
  79. get,
  80. post,
  81. request
  82. }