request.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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: options.header || {},
  32. // header: {
  33. // token: app.globalData.token
  34. // },
  35. success (res) {
  36. if (res.data.code == 0 || res.data.code == 200 || res.data.errno === 0) {
  37. resolve(res.data)
  38. } else if (needLoginErrorCode.indexOf(Number(res.data.code)) !== -1) {
  39. wx.navigateTo({
  40. url: `/pages/login/login`
  41. })
  42. } else {
  43. reject(res)
  44. }
  45. },
  46. fail (err) {
  47. reject(err)
  48. }
  49. }, options))
  50. setTimeout(() => reject('time out'), 5000)
  51. })
  52. }
  53. function get (url, data, options = {}) {
  54. options.method = 'GET'
  55. options.data = data
  56. return request(url, options)
  57. }
  58. function post (url, data = {}, options = {}) {
  59. options.method = 'POST'
  60. // token和user_ID放在url上, 后续后端再做优化
  61. const app = getApp();
  62. url += `?token=${app.globalData.token || ''}&viewerId=${app.globalData.userinfo.user_id}`
  63. options.data = Object.assign({
  64. user_id: app.globalData.userinfo.user_id
  65. }, data)
  66. return request(url, options)
  67. }
  68. export default {
  69. request,
  70. get,
  71. post
  72. }