request.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import ERROR_CODE from '../../config/error_code'
  2. import { API_BASE_URL } from './../../config/config'
  3. const BASE_URL = `${API_BASE_URL}/app/`
  4. // 需要登录的错误码
  5. const needLoginErrorCode = [3004, 3005, 3006]
  6. Promise.prototype.finally = function (callback) {
  7. var Promise = this.constructor;
  8. return this.then(
  9. function (value) {
  10. Promise.resolve(callback()).then(
  11. function () {
  12. return value;
  13. }
  14. );
  15. },
  16. function (reason) {
  17. Promise.resolve(callback()).then(
  18. function () {
  19. throw reason;
  20. }
  21. );
  22. }
  23. );
  24. }
  25. function request (url, options) {
  26. return new Promise((resolve, reject) => {
  27. wx.request(Object.assign({
  28. url: url.indexOf('://') === -1 ? BASE_URL + url : url,
  29. method: options.method,
  30. data: options.data,
  31. // header: {
  32. // token: app.globalData.token
  33. // },
  34. success (res) {
  35. if (res.data.code == 0 || res.data.code == 200) {
  36. resolve(res.data)
  37. } else if (needLoginErrorCode.indexOf(Number(res.data.code)) !== -1) {
  38. wx.navigateTo({
  39. url: `/pages/login/login`
  40. })
  41. } else {
  42. reject(res)
  43. }
  44. },
  45. fail (err) {
  46. reject(err)
  47. }
  48. }, options))
  49. setTimeout(() => reject('time out'), 5000)
  50. })
  51. }
  52. function get (url, data, options = {}) {
  53. options.method = 'GET'
  54. options.data = data
  55. return request(url, options)
  56. }
  57. function post (url, data = {}, options = {}) {
  58. options.method = 'POST'
  59. // token和user_ID放在url上, 后续后端再做优化
  60. const app = getApp();
  61. url += `?token=${app.globalData.token || ''}&viewerId=${app.globalData.userinfo.user_id}`
  62. options.data = Object.assign({
  63. user_id: app.globalData.userinfo.user_id
  64. }, data)
  65. return request(url, options)
  66. }
  67. export default {
  68. request,
  69. get,
  70. post
  71. }