request.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import axios from 'axios'
  2. import { Message, MessageBox } from 'element-ui'
  3. import store from '@/store'
  4. import { getToken } from '@/utils/auth'
  5. // create an axios instance
  6. const service = axios.create({
  7. baseURL: process.env.BASE_API, // api的base_url
  8. timeout: 5000 // request timeout
  9. })
  10. // request interceptor
  11. service.interceptors.request.use(config => {
  12. // Do something before request is sent
  13. if (store.getters.token) {
  14. config.headers['X-Token'] = getToken() // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
  15. }
  16. return config
  17. }, error => {
  18. // Do something with request error
  19. console.log(error) // for debug
  20. Promise.reject(error)
  21. })
  22. // respone interceptor
  23. service.interceptors.response.use(
  24. response => {
  25. const res = response.data
  26. if (res.errno === 502) {
  27. MessageBox.alert('系统内部错误,请联系管理员维护', '错误', {
  28. confirmButtonText: '确定',
  29. type: 'error'
  30. })
  31. return Promise.reject('error')
  32. } else if (res.errno !== 0) {
  33. MessageBox.alert('超时自动退出系统,请重新登录', '已退出', {
  34. confirmButtonText: '重新登录',
  35. type: 'error'
  36. }).then(() => {
  37. store.dispatch('FedLogOut').then(() => {
  38. location.reload()
  39. })
  40. })
  41. return Promise.reject('error')
  42. } else {
  43. return response
  44. }
  45. }, error => {
  46. console.log('err' + error)// for debug
  47. Message({
  48. message: '登录连接超时(后台不能连接,请联系系统管理员)',
  49. type: 'error',
  50. duration: 5 * 1000
  51. })
  52. return Promise.reject(error)
  53. })
  54. export default service