request.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { API_BASE_URL } from './../../config/config'
  2. const BASE_URL = `${API_BASE_URL}/app/`
  3. // 需要登录的错误码
  4. const needLoginErrorCode = [3018, 3019]
  5. Promise.prototype.finally = function (callback) {
  6. var Promise = this.constructor;
  7. return this.then(
  8. function (value) {
  9. Promise.resolve(callback()).then(
  10. function () {
  11. return value;
  12. }
  13. );
  14. },
  15. function (reason) {
  16. Promise.resolve(callback()).then(
  17. function () {
  18. throw reason;
  19. }
  20. );
  21. }
  22. );
  23. }
  24. function request (url, options) {
  25. return new Promise((resolve, reject) => {
  26. wx.request(Object.assign({
  27. url: url.indexOf('://') == -1 ? BASE_URL + url : url,
  28. method: options.method,
  29. data: options.data,
  30. header: options.header || {},
  31. // header: {
  32. // token: app.globalData.token
  33. // },
  34. success (res) {
  35. console.log(res.data, '请求成功')
  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. console.log(err, '请求失败')
  48. reject(err)
  49. }
  50. }, options))
  51. setTimeout(() => reject('time out'), 5000)
  52. })
  53. }
  54. function get (url, data, options = {}) {
  55. options.method = 'GET'
  56. options.data = data
  57. return request(url, options)
  58. }
  59. function post (url, data = {}, options = {}) {
  60. options.method = 'POST'
  61. // token和user_ID放在url上, 后续后端再做优化
  62. const app = getApp();
  63. url += `?token=${getApp().globalData.token || ''}&viewerId=${getApp().globalData.userinfo.viewerId}`
  64. options.data = Object.assign({
  65. user_id: app.globalData.userinfo.user_id
  66. }, data)
  67. return request(url, options)
  68. }
  69. export default {
  70. request,
  71. get,
  72. post
  73. }