request.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import axios from 'axios'
  2. import { MessageBox, Message } from 'element-ui'
  3. import store from '@/store'
  4. import usersInfo from '@/utils/usersInfo'
  5. import Cookies from 'js-cookie'
  6. import router from "../router";
  7. import { getToken, setToken, removeToken } from '@/utils/auth'
  8. // create an axios instance
  9. const service = axios.create({
  10. baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  11. // withCredentials: true, // send cookies when cross-domain requests
  12. timeout: 12000 // request timeout
  13. })
  14. // request interceptor
  15. service.interceptors.request.use(
  16. config => {
  17. // do something before request is sent
  18. // if (store.getters.token) {
  19. // let each request carry token
  20. // ['X-Token'] is a custom headers key
  21. // please modify it according to the actual situation
  22. if (usersInfo.accessToken()) {
  23. config.headers['Authorization'] = process.env.VUE_APP_ACCESS_TOKEN_PREFIX + usersInfo.accessToken()
  24. }
  25. // 设置语言
  26. config.headers['language'] = Cookies.get('language') ?? 'en'
  27. // }
  28. return config
  29. },
  30. error => {
  31. // do something with request error
  32. console.log(error) // for debug
  33. return Promise.reject(error)
  34. }
  35. )
  36. // response interceptor
  37. service.interceptors.response.use(
  38. response => {
  39. const responseData = response.data
  40. const data = responseData.data
  41. if ((responseData.success === false) || (responseData.code && responseData.code !== 200)) {
  42. // Message({
  43. // message: responseData.message || 'Error',
  44. // type: 'error',
  45. // duration: 5 * 1000
  46. // })
  47. return Promise.reject(responseData.message)
  48. } else {
  49. if (!data) {
  50. return { data: responseData }
  51. }
  52. return data
  53. }
  54. },
  55. err => {
  56. if (err == 'Error: Request failed with status code 401' || err == 'Error: Request failed with status code 402') {
  57. usersInfo.clear()
  58. usersInfo.baseData()
  59. removeToken()
  60. router.push({
  61. path: "/login"
  62. });
  63. }
  64. if (err && err.response && err.response.data && err.response.data.message) {
  65. err.message = err.response.data.message
  66. } else if (err && err.response) {
  67. switch (err.response.data.status) {
  68. case 400:
  69. err.message = '请求错误'
  70. break
  71. case 401:
  72. err.message = '未授权,请登录'
  73. break
  74. case 403:
  75. err.message = '拒绝访问'
  76. break
  77. case 404:
  78. err.message = `请求地址出错: ${err.response.data.config.url}`
  79. break
  80. case 408:
  81. err.message = '请求超时'
  82. break
  83. case 500:
  84. err.message = '服务器内部错误'
  85. break
  86. case 501:
  87. err.message = '服务未实现'
  88. break
  89. case 502:
  90. err.message = '网关错误'
  91. break
  92. case 503:
  93. err.message = '服务不可用'
  94. break
  95. case 504:
  96. err.message = '网关超时'
  97. break
  98. case 505:
  99. err.message = 'HTTP版本不受支持'
  100. break
  101. default:
  102. }
  103. }
  104. // Message({
  105. // message: err.message || 'Error',
  106. // type: 'error',
  107. // duration: 5 * 1000
  108. // })
  109. return Promise.reject(err)
  110. }
  111. )
  112. export default service