requestConfig.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. import request from "./request";
  2. import config from "config";
  3. // import store from "../../store/index.js";
  4. uni.getStorage({
  5. key: 'storage_key',
  6. success: function (res) {
  7. console.log(res.data);
  8. }
  9. });
  10. //可以new多个request来支持多个域名请求
  11. let $http = new request({
  12. //接口请求地址
  13. baseUrl: config.baseUrl,
  14. //服务器本地上传文件地址
  15. fileUrl: config.baseUrl,
  16. //设置请求头
  17. headers: {
  18. 'Content-Type': 'application/x-www-form-urlencoded;',
  19. 'ApiVersion': config.version,
  20. 'Device': config.device,
  21. 'Platform': config.platform,
  22. "Authorization": 'Bearer ' + uni.getStorageSync('laocui_user_token')
  23. },
  24. //以下是默认值可不写
  25. //是否提示--默认提示
  26. isPrompt: true,
  27. //是否显示请求动画
  28. load: true,
  29. //是否使用处理数据模板
  30. isFactory: true,
  31. //列表接口是否有加载判断
  32. loadMore: true,
  33. });
  34. //当前接口请求数
  35. let requestNum = 0;
  36. //请求开始拦截器
  37. $http.requestStart = function (options) {
  38. if (requestNum <= 0) {
  39. uni.showNavigationBarLoading();
  40. if (options.load) {
  41. //打开加载动画
  42. uni.showLoading({
  43. title: '加载中',
  44. mask: true
  45. });
  46. }
  47. }
  48. requestNum += 1;
  49. //请求前加入token
  50. options.headers['Authorization'] = 'Bearer ' + uni.getStorageSync('laocui_user_token');
  51. // console.log("请求开始前", options);
  52. return options;
  53. }
  54. //请求结束
  55. $http.requestEnd = function (options, resolve) {
  56. //判断当前接口是否需要加载动画
  57. requestNum = requestNum - 1;
  58. if (requestNum <= 0) {
  59. uni.hideLoading();
  60. uni.hideNavigationBarLoading();
  61. }
  62. if (resolve.errMsg && (resolve.errMsg != "request:ok" || resolve.statusCode && resolve.statusCode != 200)) {
  63. uni.showToast({
  64. title: "网络错误,请检查一下网络",
  65. mask: true,
  66. icon: "none"
  67. });
  68. }
  69. }
  70. //登录弹窗次数
  71. let loginPopupNum = 0;
  72. //所有接口数据处理(可在接口里设置不调用此方法)
  73. $http.dataFactory = function (options, resolve) {
  74. //设置回调默认值
  75. var callback = {
  76. //success数据是否请求成功状态
  77. success: false,
  78. //这里返回的数据就是调用请求方法收到的数据
  79. result: ""
  80. };
  81. // 特殊接口处理 接口报请先登录 跳转登录
  82. if (resolve.data.code === 101) {
  83. uni.showModal({
  84. title: '提示',
  85. content: resolve.data.msg,
  86. showCancel: false,
  87. success: () => {
  88. uni.setStorageSync('token', null);
  89. uni.navigateTo({
  90. url: '/pages/login/login'
  91. });
  92. }
  93. });
  94. return false;
  95. }
  96. //判断数据是否请求成功
  97. if (resolve.data.errmsg == "成功") {
  98. callback.success = true;
  99. callback.result = resolve.data;
  100. } else if (resolve.data.errno == 303) {
  101. uni.redirectTo({
  102. url: '/pages/login/login'
  103. });
  104. this.$showToast('令牌过期,请重新登陆')
  105. } else {
  106. uni.showToast({
  107. title: resolve.data.errmsg,
  108. icon: "none",
  109. mask: true,
  110. duration: 2000
  111. });
  112. //设置可以提示的时候
  113. // if (options.isPrompt) {
  114. // setTimeout(function () {
  115. //提示后台接口抛出的错误信息
  116. // uni.showToast({
  117. // title: resolve.data.msg,
  118. // icon: "none",
  119. // duration: 3000
  120. // });
  121. // }, 500);
  122. // }
  123. callback.result = resolve.data;
  124. }
  125. uni.stopPullDownRefresh();
  126. return callback;
  127. };
  128. export default $http;