request.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 = {}, params = {}, 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. let requestData = data;
  26. let requestUrl = BASE_URL + url;
  27. if (method.toUpperCase() === 'GET') {
  28. const allParams = { ...params, ...data };
  29. const paramString = Object.keys(allParams)
  30. .filter(key => allParams[key] !== undefined && allParams[key] !== null && allParams[key] !== '')
  31. .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(allParams[key])}`)
  32. .join('&');
  33. if (paramString) {
  34. requestUrl += (requestUrl.includes('?') ? '&' : '?') + paramString;
  35. }
  36. requestData = {};
  37. }
  38. return new Promise((resolve, reject) => {
  39. uni.request({
  40. url: requestUrl,
  41. method,
  42. data: requestData,
  43. header: headers,
  44. success(res) {
  45. const { code, msg, data, total, rows } = res.data;
  46. if (code === 200) {
  47. const result = {};
  48. if (data !== undefined) result.data = data;
  49. if (total !== undefined) result.total = total;
  50. if (rows !== undefined) result.rows = rows;
  51. resolve(result);
  52. } else if (code === 401) {
  53. redirectToLogin();
  54. reject('登录已失效');
  55. } else if (code === 500) {
  56. reject(msg);
  57. } else {
  58. reject(msg || '请求失败');
  59. }
  60. },
  61. fail(err) {
  62. const message = err.errMsg || '网络请求失败';
  63. uni.showToast({ title: message, icon: 'none' });
  64. reject(message);
  65. }
  66. });
  67. });
  68. }
  69. export default request;