index.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import axios from 'axios'
  2. import store from '../store'
  3. /* 创建 axios 实例 */
  4. let http = axios.create({
  5. baseURL: process.env.VUE_APP_API_ROOT,
  6. timeout: 50000,
  7. headers: {'Content-Type': 'application/json'},
  8. transformRequest: [function (data, headers) {
  9. if (headers['Content-Type'] === 'multipart/form-data;charset=UTF-8') {
  10. return data
  11. } else {
  12. headers['Content-Type'] = 'application/json'
  13. }
  14. return JSON.stringify(data)
  15. }],
  16. })
  17. /* http request 拦截器 */
  18. http.interceptors.request.use(
  19. config => {
  20. if (store.state.user.token) {
  21. config.headers.Authorization = `${store.state.user.token}`
  22. }
  23. return config
  24. },
  25. err => {
  26. return Promise.reject(err)
  27. }
  28. )
  29. /* response 拦截器 */
  30. http.interceptors.response.use(
  31. response => {
  32. return Promise.resolve(response.data)
  33. },
  34. async error => {
  35. if (error.response.status === 403) {
  36. await store.dispatch('logout')
  37. }
  38. return Promise.reject(error.response.data)
  39. }
  40. )
  41. export default http