request.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import axios from 'axios'
  2. import { Message } from 'element-ui'
  3. import store from '@/store'
  4. import { getToken } from '@/utils/auth'
  5. import { Loading } from 'element-ui'
  6. let loading //定义loading变量
  7. function startLoading () { //使用Element loading-start 方法
  8. loading = Loading.service({ fullscreen: true, text: '努力加载中', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.8)' });
  9. }
  10. function endLoading () { //使用Element loading-close 方法
  11. loading.close()
  12. }
  13. // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
  14. // create an axios instance
  15. const service = axios.create({
  16. baseURL: '', // url = base url + request url
  17. // withCredentials: true, // send cookies when cross-domain requests
  18. timeout: 5000 // request timeout
  19. })
  20. // { fullscreen: true, text: '努力加载中', spinner: 'el-icon-loading' }
  21. // request interceptor
  22. service.interceptors.request.use(
  23. config => {
  24. // do something before request is sent
  25. startLoading();
  26. if (store.getters.token) {
  27. // let each request carry token
  28. // ['X-Token'] is a custom headers key
  29. // please modify it according to the actual situation
  30. config.headers['Authorization'] = getToken()
  31. }
  32. return config
  33. },
  34. error => {
  35. // do something with request error
  36. // console.log(error) // for debug
  37. return Promise.reject(error)
  38. }
  39. )
  40. // response interceptor
  41. service.interceptors.response.use(
  42. res => {
  43. //res.code !== 200
  44. let data = JSON.parse(JSON.stringify(res.data))
  45. if (data.code != 200) {
  46. Message({
  47. message: data.msg || `请求失败code码为${res.code}`,
  48. type: 'error',
  49. duration: 5 * 1000
  50. })
  51. // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
  52. if (res.code === 401 || res.code === 403) {
  53. this.$message({
  54. message: '登录超时请重新登录',
  55. type: 'warning'
  56. })
  57. store.dispatch('user/resetToken').then(() => {
  58. location.reload()
  59. })
  60. }
  61. endLoading()
  62. return Promise.reject(new Error(res.msg || 'Error'))
  63. } else {
  64. endLoading();
  65. return data
  66. }
  67. },
  68. error => {
  69. // console.log('err' + error) // for debug
  70. Message({
  71. message: error.message,
  72. type: 'error',
  73. duration: 5 * 1000
  74. })
  75. endLoading()
  76. return Promise.reject(error)
  77. }
  78. )
  79. export default service