request.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // request.js
  2. import Notify from '../miniprogram_npm/@vant/weapp/notify/notify';
  3. import { $startWuxRefresher, $stopWuxRefresher,$stopWuxLoader} from '../miniprogram_npm/wux-weapp/index';
  4. // 配置项
  5. const config = {
  6. // baseURL: 'http://192.168.1.2:8901', // 基础URL
  7. baseURL: 'https://www.xsip.cn', // 基础URL
  8. timeout: 30000, // 超时时间(单位ms)
  9. header: {
  10. 'content-type': 'application/json', // 默认请求头
  11. // 其他全局请求头...
  12. },
  13. // 其他全局配置...
  14. tabbar:["pages/index/index","pages/hotProduct/hotProduct","pages/mine/mine"]
  15. };
  16. // 封装请求方法
  17. function request(url, method = 'GET', data = {}, header = {},isLogin=true) {
  18. return new Promise((resolve, reject) => {
  19. var obj = {
  20. type: 'danger'
  21. }
  22. var pages = getCurrentPages()
  23. var route = pages[pages.length - 1]?.route
  24. if(config.tabbar.indexOf(route)==-1){
  25. obj.top = "90"
  26. }
  27. wx.request({
  28. url: config.baseURL + url,
  29. method: method.toUpperCase(),
  30. data: method === 'GET' ? {} : data, // GET请求时将data置为空对象
  31. header: {
  32. ...config.header,
  33. ...header,
  34. "Cookie": "token="+wx.getStorageSync('token')
  35. },
  36. timeout: config.timeout,
  37. success: function(res){
  38. // 根据业务逻辑处理成功响应
  39. if (res.data && res.data.code === 200) { // 假设服务器返回code为200表示成功
  40. resolve(res.data);
  41. } else {
  42. switch(res.data.code){
  43. case 401:
  44. if(isLogin){
  45. // Notify({ type: 'danger', message: '未登录',top:'90' });
  46. obj.message = '未登录'
  47. wx.navigateTo({
  48. url: '/pages/login/login',
  49. })
  50. }
  51. wx.setStorageSync('token', '')
  52. break;
  53. default:
  54. obj.message = '请求失败'
  55. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  56. }
  57. // wx.showToast({
  58. // title: '请求失败',
  59. // icon: 'error',
  60. // duration: 2000
  61. // })
  62. Notify(obj)
  63. reject(res.data.message || '未知错误');
  64. }
  65. if($stopWuxRefresher()){
  66. $stopWuxRefresher()
  67. }
  68. },
  69. fail: function(error) {
  70. console.log(error)
  71. // 处理请求失败
  72. // wx.showToast({
  73. // title: '请求失败',
  74. // icon: 'error',
  75. // duration: 2000
  76. // })
  77. obj.message = '请求失败'
  78. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  79. Notify(obj)
  80. reject(error);
  81. },
  82. });
  83. });
  84. }
  85. // 导出请求方法
  86. module.exports = {
  87. get: (url, data,isLogin, header) => request(url, 'GET', data, header,isLogin),
  88. post: (url, data,isLogin, header) => request(url, 'POST', data, header,isLogin),
  89. // 可以继续添加其他方法,如put, delete等
  90. // ...
  91. };