axios.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /**
  2. *
  3. * http配置
  4. *
  5. */
  6. // 引入axios以及element ui中的loading和message组件
  7. import axios from 'axios'
  8. import router from '../router/router'
  9. import store from '../store'
  10. import { getToken } from '@/util/auth'
  11. import NProgress from 'nprogress' // progress bar
  12. import errorCode from '@/const/errorCode'
  13. import { Message } from 'element-ui'
  14. import 'nprogress/nprogress.css' // progress bar style
  15. axios.defaults.timeout = 30000;
  16. //返回其他状态吗
  17. // axios.defaults.validateStatus = function(status) {
  18. // return status >= 200 && status < 500; // 默认的
  19. // };
  20. //跨域请求,允许保存cookie
  21. axios.defaults.withCredentials = true;
  22. NProgress.configure({ showSpinner: false }) // NProgress Configuration
  23. //HTTPrequest拦截
  24. axios.interceptors.request.use(config => {
  25. NProgress.start() // start progress bar
  26. if (store.getters.access_token) {
  27. config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
  28. }
  29. if (sessionStorage.getItem('tenantId')){
  30. config.headers['TENANT_ID'] = sessionStorage.getItem('tenantId') // 租户ID
  31. }
  32. return config
  33. }, error => {
  34. console.log('err' + error) // for debug
  35. return Promise.reject(error)
  36. })
  37. //HTTPresponse拦截
  38. axios.interceptors.response.use(data => {
  39. NProgress.done();
  40. return data
  41. }, error => {
  42. NProgress.done()
  43. let errMsg = error.toString()
  44. let code = errMsg.substr(errMsg.indexOf('code') + 5)
  45. Message({
  46. message: errorCode[code] || errorCode['default'],
  47. type: 'error'
  48. })
  49. if(parseInt(code) === 401 || parseInt(code) === 403){
  50. store.dispatch('FedLogOut').then(() => {
  51. router.push({ path: '/login' });
  52. })
  53. }
  54. return Promise.reject(new Error(error))
  55. })
  56. export default axios