request.js 2.1 KB

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