request.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. // this.$store.dispatch('Login')
  53. } else if (code === 500) {
  54. console.log('拦截器信息:' + msg)
  55. } else if (code === 502) {
  56. console.log('拦截器信息:' + msg)
  57. } else if (code !== 200) {
  58. console.log('拦截器信息:' + msg)
  59. }
  60. return res.data
  61. }
  62. // 2. 函数内部返回Promise 对象
  63. return new Promise(async (resolve, reject) => {
  64. reqData = await reqMiddleware(reqData)
  65. // 3.wx.request() 小程序发送请求
  66. wx.request({
  67. // 把调用axios时传过来的所有参数解构赋值
  68. ...reqData,
  69. // 请求成功之后调用的函数
  70. success: async (result) => {
  71. result = await resMiddleware(result)
  72. resolve(result)
  73. },
  74. // 请求失败之后调用的函数
  75. fail: (error) => {
  76. reject(error)
  77. },
  78. complete: () => {
  79. }
  80. });
  81. });
  82. }
  83. export default myAxios