request.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import {
  2. getToken,
  3. setToken,
  4. removeToken,
  5. refreshToken
  6. } from '@/utils/auth'
  7. import {
  8. login
  9. } from '@/api/login.js'
  10. import errorCode from '@/utils/errorCode'
  11. /**
  12. * http请求封装
  13. */
  14. const myAxios = (req) => {
  15. let query = ''
  16. req.params && Object.keys(req.params).map((key, index) => {
  17. if (index) {
  18. query += '&' + key + '=' + encodeURIComponent(req.params[key])
  19. } else {
  20. query += '?' + key + '=' + encodeURIComponent(req.params[key])
  21. }
  22. })
  23. let reqData = {
  24. url: req.baseURL ? req.baseURL : '' + req.url + query,
  25. method: req.method,
  26. data: {
  27. ...req.data
  28. },
  29. header: {
  30. ...req.header
  31. },
  32. timeout: req.timeout || 10000
  33. }
  34. // 请求拦截器
  35. async function reqMiddleware(config) {
  36. if (config.header.isLogin) {
  37. return config
  38. }
  39. let token = await getToken()
  40. config.header['Authorization'] = 'Bearer ' + token // 让每个请求携带自定义token 请根据实际情况自行修改
  41. return config
  42. }
  43. // 响应拦截器
  44. async function resMiddleware(res) {
  45. const code = res.data.code || 200;
  46. // 获取错误信息
  47. const msg = errorCode[code] || res.data.msg || errorCode['default']
  48. //重置Authorization时间
  49. if (code !== 401) refreshToken()
  50. if (code === 401) {
  51. console.log('拦截器信息:' + msg)
  52. } else if (code === 500) {
  53. console.log('拦截器信息:' + msg)
  54. } else if (code === 502) {
  55. console.log('拦截器信息:' + msg)
  56. } else if (code !== 200) {
  57. console.log('拦截器信息:' + msg)
  58. }
  59. return res.data
  60. }
  61. // 2. 函数内部返回Promise 对象
  62. return new Promise(async (resolve, reject) => {
  63. reqData = await reqMiddleware(reqData)
  64. // 3.wx.request() 小程序发送请求
  65. wx.request({
  66. // 把调用axios时传过来的所有参数解构赋值
  67. ...reqData,
  68. // 请求成功之后调用的函数
  69. success: async (result) => {
  70. result = await resMiddleware(result)
  71. resolve(result)
  72. },
  73. // 请求失败之后调用的函数
  74. fail: (error) => {
  75. reject(error)
  76. },
  77. complete: () => {
  78. }
  79. });
  80. });
  81. }
  82. export default myAxios