http.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. let baseUrl = 'http://localhost:8080';
  2. switch (process.env.NODE_ENV) {
  3. case 'development':
  4. baseUrl = 'https://zhuoka.izouma.com';
  5. break;
  6. case 'test':
  7. baseUrl = 'http://localhost:8080';
  8. break;
  9. case 'production':
  10. baseUrl = 'https://zhuoka.izouma.com';
  11. break;
  12. }
  13. function parseUrl(url) {
  14. let _baseUrl = baseUrl;
  15. console.log(baseUrl)
  16. if (url.startsWith('http')) {
  17. return url;
  18. }
  19. if (!_baseUrl.endsWith('/')) {
  20. _baseUrl += '/';
  21. }
  22. if (url.startsWith('/')) {
  23. url = url.slice(1);
  24. }
  25. return _baseUrl + url;
  26. }
  27. const http = {
  28. parseUrl: parseUrl,
  29. setToken(token) {
  30. uni.setStorageSync('token', token);
  31. this.token = token;
  32. },
  33. clearToken() {
  34. this.token = '';
  35. uni.removeStorageSync('token');
  36. console.log('clear token');
  37. },
  38. getToken() {
  39. if (!this.token) {
  40. try {
  41. this.token = uni.getStorageSync('token');
  42. } catch (e) {}
  43. }
  44. return this.token;
  45. },
  46. get(url, params, options) {
  47. options = options || {};
  48. return new Promise((resolve, reject) => {
  49. uni.request({
  50. method: 'GET',
  51. url: parseUrl(url),
  52. data: params,
  53. dataType: 'json',
  54. header: {
  55. Accept: 'application/json',
  56. Authorization: this.getToken() ? 'Bearer ' + this.getToken() : 'Bearer ',
  57. ...(options.header || {})
  58. },
  59. success(res) {
  60. if (res && res.statusCode === 200) {
  61. resolve(res.data);
  62. } else {
  63. reject(res.data || res);
  64. }
  65. },
  66. fail(err) {
  67. reject(err.data || err);
  68. }
  69. });
  70. });
  71. },
  72. post(url, data, options, backHeader = false) {
  73. console.log('post');
  74. options = options || {};
  75. return new Promise((resolve, reject) => {
  76. uni.request({
  77. method: 'post',
  78. url: parseUrl(url),
  79. data: data,
  80. dataType: 'json',
  81. header: {
  82. Accept: 'application/json',
  83. 'content-type': 'application/x-www-form-urlencoded',
  84. Authorization: this.getToken() ? 'Bearer ' + this.getToken() : '',
  85. ...(options.header || {})
  86. },
  87. success(res) {
  88. if (res && res.statusCode === 200) {
  89. resolve(backHeader ? res : res.data);
  90. } else {
  91. reject(res.data || res);
  92. }
  93. },
  94. fail(err) {
  95. reject(err.data || err);
  96. }
  97. });
  98. });
  99. },
  100. postJson(url, data, options, backHeader = false) {
  101. options = options || {};
  102. return new Promise((resolve, reject) => {
  103. uni.request({
  104. method: 'post',
  105. url: parseUrl(url),
  106. data: data,
  107. dataType: 'json',
  108. header: {
  109. Accept: 'application/json',
  110. 'Content-Type': 'application/json',
  111. Authorization: this.getToken() ? 'Bearer ' + this.getToken() : '',
  112. ...(options.header || {})
  113. },
  114. success(res) {
  115. if (res && res.statusCode === 200) {
  116. resolve(backHeader ? res : res.data);
  117. } else {
  118. reject(res.data || res);
  119. }
  120. },
  121. fail(err) {
  122. reject(err.data || err);
  123. }
  124. });
  125. });
  126. },
  127. uploadFile(filePath, options) {
  128. options = options || {};
  129. return new Promise((resolve, reject) => {
  130. uni.uploadFile({
  131. url: baseUrl + '/upload/file',
  132. filePath: filePath,
  133. name: 'file',
  134. header: {
  135. Accept: 'application/json',
  136. 'content-type': 'application/x-www-form-urlencoded',
  137. Authorization: this.getToken() ? 'Bearer ' + this.getToken() : '',
  138. ...(options.header || {})
  139. },
  140. formData: options.formData || {},
  141. success(res) {
  142. if (res && res.statusCode === 200) {
  143. try {
  144. resolve(res.data);
  145. } catch (e) {
  146. reject(e);
  147. }
  148. } else {
  149. reject(res);
  150. }
  151. },
  152. fail(err) {
  153. reject(err);
  154. }
  155. });
  156. });
  157. }
  158. };
  159. export default {
  160. http: http,
  161. install(_Vue) {
  162. _Vue.prototype.$baseUrl = baseUrl;
  163. _Vue.prototype.$http = http;
  164. _Vue.prototype.$request = options => {
  165. options = options || {};
  166. options.url = parseUrl(options.url);
  167. return new Promise((resolve, reject) => {
  168. options.success = res => {
  169. resolve(res);
  170. };
  171. options.success = err => {
  172. reject(err);
  173. };
  174. });
  175. };
  176. }
  177. };