request.ts 897 B

123456789101112131415161718192021222324252627282930313233343536
  1. import router from '@/router/index'
  2. import axios from 'axios'
  3. import Message from '@/utils/Message'
  4. const api = import.meta.env.VITE_API_HOST
  5. const instance = axios.create({
  6. baseURL: api
  7. })
  8. // 请求拦截器
  9. instance.interceptors.request.use((config:any) => {
  10. config.headers['Authorization'] = localStorage.getItem('token')
  11. return config
  12. }, err => {
  13. return Promise.reject(err)
  14. })
  15. // 响应拦截器
  16. instance.interceptors.response.use(response => {
  17. return response
  18. }, err => {
  19. if (err.response.status === 401) {
  20. localStorage.removeItem('token')
  21. Message.error('登录状态已失效!请重新登录!')
  22. setTimeout(() => {
  23. const isMobile = !!navigator.userAgent.match(/AppleWebKit.*Mobile.*/)
  24. router.push({ path: isMobile ? '/m_login' : '/p_login' })
  25. }, 1000)
  26. }
  27. return Promise.reject(err.response)
  28. })
  29. // 导出工具函数
  30. export default instance