request.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import store from '@/store'
  2. import { msg, getAuthToken } from './util'
  3. const BASE_URL = 'http://127.0.0.1:28080/api/';
  4. export const request = (options) => {
  5. return new Promise((resolve, reject) => {
  6. // 发起请求
  7. const authToken = getAuthToken();
  8. uni.request({
  9. url: BASE_URL + options.url,
  10. method: options.method || 'GET',
  11. data: options.data || {},
  12. header: {
  13. 'Authorization': authToken ? `Bearer ${authToken}` : ''
  14. }
  15. }).then(res => {
  16. res = res[1];
  17. const statusCode = res.statusCode;
  18. if (statusCode !== 200) {
  19. msg('请求失败,请重试');
  20. return;
  21. }
  22. const code = res.data.code;
  23. const message = res.data.msg;
  24. // Token 过期,引导重新登陆
  25. if (code === 401) {
  26. msg('登录信息已过期,请重新登录');
  27. store.commit('logout');
  28. // reject('无效的登录信息');
  29. return;
  30. }
  31. // 系统异常
  32. if (code === 500) {
  33. msg('系统异常,请稍后重试');
  34. reject(new Error(message));
  35. return;
  36. }
  37. // 其它失败情况
  38. if (code > 0) {
  39. msg(message);
  40. // 提供 code + msg,可以基于 code 做进一步的处理。当然,一般情况下是不需要的。
  41. // 不需要的场景:手机登录时,密码不正确;
  42. // 需要的场景:微信登录时,未绑定手机,后端会返回一个 code 码,前端需要基于它跳转到绑定手机界面;
  43. reject({
  44. 'code': code,
  45. 'msg': message
  46. });
  47. return;
  48. }
  49. // 处理成功,则只返回成功的 data 数据,不返回 code 和 msg
  50. resolve(res.data.data);
  51. }).catch((err) => {
  52. reject(err);
  53. })
  54. })
  55. }