request.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import axios from 'axios'
  2. // import store from '@/store'
  3. // import { getToken } from '@/utils/auth'
  4. import { loginUrl } from '@/apiConfig/requestIP.js'
  5. import { Encrypt } from '@/utils/crypto-js.js'
  6. import { message } from '@/utils/mesDebounce'
  7. import router from '@/router/index.js'
  8. // create an axios instance
  9. const service = axios.create({
  10. baseURL: '/apis', // url = base url + request url
  11. // withCredentials: true, // send cookies when cross-domain requests
  12. timeout: 5000, // request timeout
  13. withCredentials: true
  14. })
  15. axios.defaults.withCredentials = true
  16. // request interceptor
  17. service.interceptors.request.use(
  18. config => {
  19. // do something before request is sent
  20. // if (store.getters.token) {
  21. // // let each request carry token
  22. // // ['X-Token'] is a custom headers key
  23. // // please modify it according to the actual situation
  24. // config.headers['X-Token'] = getToken()
  25. // }
  26. config.headers['secret'] = Encrypt()
  27. return config
  28. },
  29. error => {
  30. // do something with request error
  31. console.log(error) // for debug
  32. return Promise.reject(error)
  33. }
  34. )
  35. // response interceptor
  36. service.interceptors.response.use(
  37. /**
  38. * If you want to get http information such as headers or status
  39. * Please return response => response
  40. */
  41. /**
  42. * Determine the request status by custom code
  43. * Here is just an example
  44. * You can also judge the status by HTTP Status Code
  45. */
  46. response => {
  47. const res = response.data
  48. if (typeof res.code !== 'undefined' && res.code !== 200 && res.code !== 0) {
  49. message({
  50. message: res.msg || 'Error',
  51. type: 'error',
  52. duration: 5 * 1000
  53. })
  54. } else if (typeof res.retCode !== 'undefined' && res.retCode !== 0) {
  55. message({
  56. message: res.retMsg || 'Error',
  57. type: 'error',
  58. duration: 5 * 1000
  59. })
  60. }
  61. return res
  62. },
  63. error => {
  64. console.log('err' + error) // for debug
  65. if (error && error.response) {
  66. switch (error.response.status) {
  67. case 400:
  68. error.message = '错误请求'
  69. break
  70. case 401:
  71. error.message = '未授权,请重新登录'
  72. break
  73. case 403:
  74. error.message = '拒绝访问'
  75. break
  76. case 404:
  77. error.message = '请求错误,未找到该资源'
  78. break
  79. case 405:
  80. error.message = '请求方法未允许'
  81. break
  82. case 408:
  83. error.message = '请求超时'
  84. break
  85. case 500:
  86. error.message = '服务器端出错'
  87. break
  88. case 501:
  89. error.message = '网络未实现'
  90. break
  91. case 502:
  92. error.message = '网络错误'
  93. break
  94. case 503:
  95. error.message = '服务不可用'
  96. break
  97. case 504:
  98. error.message = '网络超时'
  99. break
  100. case 505:
  101. error.message = 'http版本不支持该请求'
  102. break
  103. default:
  104. error.message = `未知错误${error.response.status}`
  105. }
  106. message({
  107. message: error.message,
  108. type: 'warning',
  109. duration: 5 * 1000
  110. })
  111. if (error.response.status === 401) {
  112. location.href = loginUrl
  113. } else if (error.response.status === 403) {
  114. router.push({ name: 'notAccess' })
  115. }
  116. } else {
  117. error.message = '网络请求超时,请检查网络信息!'
  118. message({
  119. message: error.message,
  120. type: 'warning',
  121. duration: 5 * 1000
  122. })
  123. }
  124. return Promise.reject(error)
  125. }
  126. )
  127. export default service