request.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // 网络请求封装
  2. // 根据环境配置 BASE_URL
  3. // 开发环境:改成你的本地 IP,如 'http://192.168.1.100:8080'
  4. // 生产环境:改成实际的服务器地址
  5. const BASE_URL = 'http://localhost:8080';
  6. // OSS 文件上传基地址(与后端网关地址保持一致)
  7. const UPLOAD_URL = BASE_URL;
  8. export { BASE_URL, UPLOAD_URL };
  9. const request = (options) => {
  10. return new Promise((resolve, reject) => {
  11. const token = uni.getStorageSync('token');
  12. // 处理 GET 请求的 params(将 params 对象拼接到 URL)
  13. let url = BASE_URL + options.url;
  14. if (options.params && Object.keys(options.params).length > 0) {
  15. const queryString = Object.entries(options.params)
  16. .filter(([, value]) => value !== undefined && value !== null && value !== '')
  17. .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
  18. .join('&');
  19. if (queryString) {
  20. url += '?' + queryString;
  21. }
  22. }
  23. console.log('请求 URL:', url, '方法:', options.method);
  24. uni.request({
  25. url: url,
  26. method: options.method || 'GET',
  27. data: options.data || {},
  28. header: {
  29. ...options.header,
  30. 'clientid': 'e5cd7e4891bf95d1d19206ce24a7b32e',
  31. 'PLATFORM_CODE': 'PINGTAIDUAN',
  32. 'Authorization': token ? `Bearer ${token}` : '',
  33. 'Content-Type': 'application/json'
  34. },
  35. success: (res) => {
  36. console.log('响应状态码:', res.statusCode, '响应数据:', res.data);
  37. if (res.statusCode === 200) {
  38. if (res.data.code === 200 || res.data.code === 0) {
  39. resolve(res.data);
  40. } else if (res.data.code === 401) {
  41. // 登录失效,清除本地 token 并跳转登录页
  42. uni.removeStorageSync('token');
  43. uni.navigateTo({
  44. url: '/pages/login/login'
  45. });
  46. reject(res.data);
  47. } else {
  48. uni.showToast({
  49. title: res.data.msg || '服务器错误',
  50. icon: 'none'
  51. });
  52. reject(res.data);
  53. }
  54. } else {
  55. uni.showToast({
  56. title: '连接服务器失败: ' + res.statusCode,
  57. icon: 'none'
  58. });
  59. reject(res);
  60. }
  61. },
  62. fail: (err) => {
  63. console.error('网络请求失败:', err);
  64. uni.showToast({
  65. title: '网络请求失败: ' + (err.errMsg || '未知错误'),
  66. icon: 'none'
  67. });
  68. reject(err);
  69. }
  70. });
  71. });
  72. };
  73. export default request;