request.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import axios from 'axios'
  2. import router from '@/router'
  3. import store from '@/store'
  4. import { Message } from 'element-ui'
  5. const service = axios.create({
  6. baseURL: process.env.VUE_APP_BASE_API || '',
  7. timeout: Number(process.env.VUE_APP_TIMEOUT) || 15000
  8. })
  9. // 请求拦截器
  10. service.interceptors.request.use(
  11. config => {
  12. const token = localStorage.getItem('token')
  13. if (token) {
  14. config.headers['Authorization'] = token
  15. }
  16. return config
  17. },
  18. error => Promise.reject(error)
  19. )
  20. // 响应拦截器
  21. service.interceptors.response.use(
  22. response => response.data,
  23. error => {
  24. if (error.response && error.response.status === 401) {
  25. store.dispatch('logout')
  26. if (router.currentRoute.path !== '/login') {
  27. router.push('/login')
  28. }
  29. } else {
  30. const msg = error.response && error.response.data && error.response.data.message
  31. ? error.response.data.message
  32. : error.message || '请求失败'
  33. Message.error(msg)
  34. }
  35. return Promise.reject(error)
  36. }
  37. )
  38. export default service