request.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const BASE_URL = 'http://127.0.0.1:8080';
  2. const CLIENT_ID = 'e48ac397bff4f031b14d6e671eee49c3';
  3. let isRedirectingToLogin = false;
  4. function getToken() {
  5. return uni.getStorageSync('token') || '';
  6. }
  7. function redirectToLogin() {
  8. if (isRedirectingToLogin) return;
  9. isRedirectingToLogin = true;
  10. uni.showToast({ title: '登录已失效,请重新登录', icon: 'none', duration: 1500 });
  11. setTimeout(() => {
  12. isRedirectingToLogin = false;
  13. uni.reLaunch({ url: '/pages/login/index' });
  14. }, 1500);
  15. }
  16. function request(options = {}) {
  17. const { url, method = 'GET', data = {}, header = {} } = options;
  18. const token = getToken();
  19. const headers = {
  20. 'Content-Type': 'application/json',
  21. 'clientid': CLIENT_ID,
  22. 'Authorization': 'Bearer ' + token,
  23. ...header
  24. };
  25. return new Promise((resolve, reject) => {
  26. uni.request({
  27. url: BASE_URL + url,
  28. method,
  29. data,
  30. header: headers,
  31. success(res) {
  32. const { code, msg, data, total, rows } = res.data;
  33. if (code === 200) {
  34. const result = {};
  35. if (data !== undefined) result.data = data;
  36. if (total !== undefined) result.total = total;
  37. if (rows !== undefined) result.rows = rows;
  38. resolve(result);
  39. } else if (code === 401) {
  40. redirectToLogin();
  41. reject(new Error('登录已失效'));
  42. } else if (code === 500) {
  43. reject(new Error(msg));
  44. } else {
  45. reject(new Error(msg || '请求失败'));
  46. }
  47. },
  48. fail(err) {
  49. const message = err.errMsg || '网络请求失败';
  50. uni.showToast({ title: message, icon: 'none' });
  51. reject(new Error(message));
  52. }
  53. });
  54. });
  55. }
  56. export default request;