request.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  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.18: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. function getPages(){
  17. var obj = {
  18. type: 'danger'
  19. }
  20. var pages = getCurrentPages()
  21. var route = pages[pages.length - 1]?.route
  22. console.log(config.tabbar,route)
  23. if(route && config.tabbar.indexOf(route)==-1){
  24. obj.top = wx.getStorageSync('height')
  25. }
  26. return obj
  27. }
  28. // 封装请求方法
  29. function request(url, method = 'GET', data = {}, header = {},isLogin=true) {
  30. return new Promise((resolve, reject) => {
  31. var str = ''
  32. if(method === 'GET'){
  33. str ='?' + Object.keys(data).map(key => `${key}=${encodeURIComponent(data[key])}`).join('&')
  34. }
  35. wx.request({
  36. url: config.baseURL + url + str,
  37. method: method.toUpperCase(),
  38. data: method === 'GET' ? {} : data, // GET请求时将data置为空对象
  39. header: {
  40. ...config.header,
  41. ...header,
  42. "Authorization": wx.getStorageSync('token')
  43. // "Cookie": wx.getStorageSync('token')
  44. },
  45. timeout: config.timeout,
  46. success: function(res){
  47. var obj = getPages()
  48. wx.hideLoading()
  49. // 根据业务逻辑处理成功响应
  50. if (res.data && res.data.code === 200) { // 假设服务器返回code为200表示成功
  51. resolve(res.data);
  52. } else if(res.data && !res.data.code){
  53. resolve(res.data);
  54. }
  55. else {
  56. switch(res.data.code){
  57. case 401:
  58. if(isLogin){
  59. // Notify({ type: 'danger', message: '未登录',top:'90' });
  60. obj.message = '未登录'
  61. wx.navigateTo({
  62. url: '/pages/login/login',
  63. })
  64. }
  65. wx.setStorageSync('token', '')
  66. break;
  67. default:
  68. // obj.message = '请求失败'
  69. obj.message = res.data.message
  70. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  71. }
  72. // wx.showToast({
  73. // title: '请求失败',
  74. // icon: 'error',
  75. // duration: 2000
  76. // })
  77. console.log(obj)
  78. if(obj.message){
  79. Notify(obj)
  80. }
  81. reject(res.data.message || '未知错误');
  82. }
  83. if($stopWuxRefresher()){
  84. $stopWuxRefresher()
  85. }
  86. },
  87. fail: function(error) {
  88. console.log(error)
  89. wx.hideLoading()
  90. var obj = getPages()
  91. // 处理请求失败
  92. // wx.showToast({
  93. // title: '请求失败',
  94. // icon: 'error',
  95. // duration: 2000
  96. // })
  97. obj.message = '请求超时'
  98. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  99. Notify(obj)
  100. reject(error);
  101. if($stopWuxRefresher()){
  102. $stopWuxRefresher()
  103. }
  104. },
  105. });
  106. });
  107. }
  108. function upload(url="/fileManager/uploadNormalFile", path = '', header = {},formData={}) {
  109. return new Promise((resolve, reject) => {
  110. wx.uploadFile({
  111. url: config.baseURL + url, //仅为示例,非真实的接口地址
  112. filePath: path,
  113. name: 'multipartFile',
  114. formData: formData,
  115. header: {
  116. ...config.header,
  117. ...header,
  118. "Authorization": wx.getStorageSync('token')
  119. },
  120. timeout: config.timeout,
  121. success: function(res){
  122. wx.hideLoading()
  123. var obj = getPages()
  124. if(res.data){
  125. res.data = JSON.parse(res.data)
  126. }
  127. // 根据业务逻辑处理成功响应
  128. if (res.data && res.data.code === 200) { // 假设服务器返回code为200表示成功
  129. resolve(res.data);
  130. }else {
  131. switch(res.data.code){
  132. case 401:
  133. if(isLogin){
  134. // Notify({ type: 'danger', message: '未登录',top:'90' });
  135. obj.message = '未登录'
  136. wx.navigateTo({
  137. url: '/pages/login/login',
  138. })
  139. }
  140. wx.setStorageSync('token', '')
  141. break;
  142. default:
  143. // obj.message = '请求失败'
  144. obj.message = res.data.message
  145. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  146. }
  147. // wx.showToast({
  148. // title: '请求失败',
  149. // icon: 'error',
  150. // duration: 2000
  151. // })
  152. console.log(obj)
  153. if(obj.message){
  154. Notify(obj)
  155. }
  156. reject(res.data.message || '未知错误');
  157. }
  158. if($stopWuxRefresher()){
  159. $stopWuxRefresher()
  160. }
  161. },
  162. fail: function(error) {
  163. console.log(error)
  164. wx.hideLoading()
  165. var obj = getPages()
  166. // 处理请求失败
  167. // wx.showToast({
  168. // title: '请求失败',
  169. // icon: 'error',
  170. // duration: 2000
  171. // })
  172. obj.message = '请求超时'
  173. // Notify({ type: 'danger', message: '请求失败',top:'90' });
  174. Notify(obj)
  175. reject(error);
  176. },
  177. });
  178. });
  179. }
  180. // 导出请求方法
  181. module.exports = {
  182. get: (url, data,isLogin, header) => request(url, 'GET', data, header,isLogin),
  183. post: (url, data,isLogin, header) => request(url, 'POST', data, header,isLogin),
  184. // 可以继续添加其他方法,如put, delete等
  185. // ...
  186. upload: ( path,formData,url, header) => upload(url, path, header,formData),
  187. };