http.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. const baseUrl = 'http://192.168.50.132:8080';
  2. // const baseUrl = 'https://walkchina.yzkm001.cn';
  3. function parseUrl(url) {
  4. let _baseUrl = baseUrl;
  5. if (url.startsWith('http')) {
  6. return url;
  7. }
  8. if (!_baseUrl.endsWith('/')) {
  9. _baseUrl += '/';
  10. }
  11. if (url.startsWith('/')) {
  12. url = url.slice(1);
  13. }
  14. return _baseUrl + url;
  15. }
  16. export default {
  17. install(_Vue) {
  18. _Vue.prototype.$baseUrl = baseUrl;
  19. _Vue.prototype.$http = {
  20. setToken(token) {
  21. wx.setStorageSync('token', token);
  22. this.token = token;
  23. },
  24. clearToken() {
  25. this.token = '';
  26. wx.removeStorageSync('token');
  27. console.log('clear token');
  28. },
  29. getToken() {
  30. if (!this.token) {
  31. try {
  32. this.token = wx.getStorageSync('token');
  33. } catch (e) {}
  34. }
  35. return this.token;
  36. },
  37. get(url, params, options) {
  38. options = options || {};
  39. return new Promise((resolve, reject) => {
  40. wx.request({
  41. method: 'GET',
  42. url: parseUrl(url),
  43. data: params,
  44. dataType: 'json',
  45. header: {
  46. Authorization: this.getToken() ? 'Bearer ' + this.getToken() : '',
  47. ...(options.header || {}),
  48. },
  49. success(res) {
  50. if (res && res.statusCode === 200) {
  51. resolve(res.data);
  52. } else {
  53. reject(res);
  54. }
  55. },
  56. fail(err) {
  57. reject(err);
  58. },
  59. });
  60. });
  61. },
  62. post(url, data, options) {
  63. options = options || {};
  64. return new Promise((resolve, reject) => {
  65. wx.request({
  66. method: 'post',
  67. url: parseUrl(url),
  68. data: data,
  69. dataType: 'json',
  70. header: {
  71. 'content-type': 'application/x-www-form-urlencoded',
  72. Authorization: this.getToken() ? 'Bearer ' + this.getToken() : '',
  73. ...(options.header || {}),
  74. },
  75. success(res) {
  76. if (res && res.statusCode === 200) {
  77. resolve(res.data);
  78. } else {
  79. reject(res);
  80. }
  81. },
  82. fail(err) {
  83. reject(err);
  84. },
  85. });
  86. });
  87. },
  88. uploadFile(filePath, options) {
  89. options = options || {};
  90. return new Promise((resolve, reject) => {
  91. wx.uploadFile({
  92. url: baseUrl + '/upload/file',
  93. filePath: filePath,
  94. name: 'file',
  95. header: {
  96. 'content-type': 'application/x-www-form-urlencoded',
  97. Authorization: this.getToken() ? 'Bearer ' + this.getToken() : '',
  98. ...(options.header || {}),
  99. },
  100. formData: options.formData || {},
  101. success(res) {
  102. if (res && res.statusCode === 200) {
  103. try {
  104. resolve(JSON.parse(res.data));
  105. } catch (e) {
  106. reject(e);
  107. }
  108. } else {
  109. reject(res);
  110. }
  111. },
  112. fail(err) {
  113. reject(err);
  114. },
  115. });
  116. });
  117. },
  118. };
  119. _Vue.prototype.$request = options => {
  120. options = options || {};
  121. options.url = parseUrl(options.url);
  122. return new Promise((resolve, reject) => {
  123. options.success = res => {
  124. resolve(res);
  125. };
  126. options.success = err => {
  127. reject(err);
  128. };
  129. });
  130. };
  131. },
  132. };