request.js 1.6 KB

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