request.js 2.9 KB

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