request.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import axios from 'axios'
  2. import { Message } from 'element-ui'
  3. import router from '@/router'
  4. const service = axios.create({
  5. baseURL: process.env.VUE_APP_BASE_API || '',
  6. timeout: 10000
  7. })
  8. // 请求拦截器
  9. service.interceptors.request.use(
  10. config => {
  11. const token = localStorage.getItem('token')
  12. if (token) {
  13. config.headers['Authorization'] = `Bearer ${token}`
  14. }
  15. return config
  16. },
  17. error => {
  18. console.error('请求错误:', error)
  19. return Promise.reject(error)
  20. }
  21. )
  22. // 响应拦截器
  23. service.interceptors.response.use(
  24. response => {
  25. const res = response.data
  26. if (res.code === 200) {
  27. return res
  28. } else {
  29. Message.error(res.message || '请求失败')
  30. return Promise.reject(new Error(res.message || '请求失败'))
  31. }
  32. },
  33. error => {
  34. console.error('响应错误:', error)
  35. if (error.response) {
  36. if (error.response.status === 401) {
  37. Message.error('登录已过期,请重新登录')
  38. localStorage.clear()
  39. router.push('/login')
  40. } else {
  41. Message.error(error.response.data?.message || '请求失败')
  42. }
  43. } else {
  44. Message.error('网络请求失败')
  45. }
  46. return Promise.reject(error)
  47. }
  48. )
  49. export default service