request.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import axios from 'axios'
  2. import { MessageBox, Message, Loading } from 'element-ui'
  3. import store from '@/store'
  4. import { getToken } from '@/utils/auth'
  5. import { appID, appKey, appSecret, serverUrl, devServerUrl } from '@/settings'
  6. const baseURL = process.env.NODE_ENV === 'development' ? devServerUrl : serverUrl
  7. // create an axios instance
  8. const service = axios.create({
  9. baseURL: baseURL, // url = base url + request url
  10. // withCredentials: true, // send cookies when cross-domain requests
  11. timeout: 1000 * 60 * 3 // request timeout
  12. })
  13. let loadingInstance = null
  14. // request interceptor
  15. service.interceptors.request.use(
  16. config => {
  17. // do something before request is sent
  18. config.headers['AppID'] = appID
  19. config.headers['AppKey'] = appKey
  20. config.headers['AppSecret'] = appSecret
  21. loadingInstance = Loading.service({ fullscreen: true })
  22. if (store.getters.token) {
  23. config.headers['Authorization'] = 'Bearer ' + getToken()
  24. }
  25. return config
  26. },
  27. error => {
  28. // do something with request error
  29. console.log(error) // for debug
  30. return Promise.reject(error)
  31. }
  32. )
  33. // response interceptor
  34. service.interceptors.response.use(
  35. response => {
  36. loadingInstance.close()
  37. const res = response.data
  38. if (res.code !== 0) {
  39. // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
  40. if (res.code === 401) {
  41. // to re-login
  42. MessageBox.confirm('登录失效,请重新登录!', '温馨提示!', {
  43. confirmButtonText: '确认',
  44. cancelButtonText: '取消',
  45. type: 'warning'
  46. }).then(() => {
  47. store.dispatch('user/resetToken').then(() => {
  48. location.reload()
  49. })
  50. })
  51. } else {
  52. Message({
  53. message: res.msg || 'Error',
  54. type: 'error',
  55. duration: 3 * 1000
  56. })
  57. }
  58. return Promise.reject(new Error(res.message || 'Error'))
  59. } else {
  60. return res
  61. }
  62. },
  63. error => {
  64. loadingInstance.close()
  65. Message({
  66. message: error.message || 'Error',
  67. type: 'error',
  68. duration: 3 * 1000
  69. })
  70. return Promise.reject(error)
  71. }
  72. )
  73. export default service