http.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. // 引入配置文件
  2. import config from "./config.js";
  3. // #ifdef MP-WEIXIN
  4. import wxApp from "./wecaht.min.app.js"
  5. import {
  6. getToken,
  7. clearToken
  8. } from './token.js'
  9. // #endif
  10. const filterNoToken = ["/api/auth/refreshToken", "/api/auth/login"];
  11. export default {
  12. config: {
  13. baseUrl: config.apiUrl,
  14. header: {
  15. 'Content-Type': 'application/json;charset=UTF-8',
  16. },
  17. data: {},
  18. method: "GET",
  19. dataType: "json",
  20. },
  21. async request(options = {}) {
  22. options.header = options.header || this.config.header;
  23. options.method = options.method || this.config.method;
  24. options.dataType = options.dataType || this.config.dataType;
  25. let version = 'web';
  26. // #ifdef MP-WEIXIN
  27. // 微信小程序处理
  28. options.header.appid = wxApp.getWXAppId();
  29. options.header.source = 'wxapp';
  30. // 过滤不需要token的api
  31. if (filterNoToken.indexOf(options.url) === -1) {
  32. // console.log('getTokenString ',options.url )
  33. options.header.Authorization = await (this.getTokenString());
  34. }
  35. // #endif
  36. options.url = this.config.baseUrl + options.url;
  37. console.log('options.url ',options.url )
  38. return uni.request(options).then(res => {
  39. res = res[1].data;
  40. if (res.code == 500201) {
  41. // 未登录
  42. clearToken();
  43. getToken();
  44. if (filterNoToken.indexOf(options.url) === -1) {
  45. return this.request(options);
  46. }
  47. }
  48. return res.data;
  49. });
  50. },
  51. get(url, data, options = {}) {
  52. options.url = url;
  53. options.data = data;
  54. options.method = 'GET';
  55. return this.request(options);
  56. },
  57. post(url, data, options = {}) {
  58. options.url = url;
  59. options.data = data;
  60. options.method = 'POST';
  61. return this.request(options);
  62. },
  63. // 上传图片
  64. upload(url, options = {}) {
  65. options.url = this.config.baseUrl + url;
  66. options.header = options.header || this.config.header;
  67. options.fileType = options.fileType || "image";
  68. options.formData = options.formData || {};
  69. options.filePath = options.filePath;
  70. options.name = options.name;
  71. // TODO:token增加等操作
  72. if (options.token) {
  73. // 验证是否登录
  74. if (!this.checkToken(options.checkToken)) return;
  75. // 验证权限
  76. if (!this.checkAuth(options.checkAuth)) return;
  77. options.header.token = User.token;
  78. }
  79. return uni.uploadFile(options);
  80. },
  81. // 错误处理
  82. errorCheck(err, res, errfun = false, resfun = false) {
  83. if (err) {
  84. typeof errfun === 'function' && errfun();
  85. uni.showToast({
  86. title: '加载失败',
  87. icon: "none"
  88. });
  89. return false;
  90. }
  91. if (res.data.errorCode) {
  92. typeof errfun === 'function' && resfun();
  93. uni.showToast({
  94. title: res.data.msg,
  95. icon: "none"
  96. });
  97. return false;
  98. }
  99. return true;
  100. },
  101. async getTokenString() {
  102. // console.log('getTokenString-----start');
  103. await getToken();
  104. let token = uni.getStorageSync('token');
  105. // token格式化
  106. if (token && typeof token === "string") {
  107. token = JSON.parse(token);
  108. }
  109. // console.log('getTokenString--end', token);
  110. return token.token;
  111. }
  112. }