request.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import axios from 'axios'
  2. import { Message, MessageBox } from 'element-ui'
  3. // import store from '../store'
  4. // import { getToken } from '@/utils/auth'
  5. // 创建axios实例
  6. const service = axios.create({
  7. baseURL: process.env.BASE_API, // api 的 base_url
  8. timeout: 5000 // 请求超时时间
  9. })
  10. // request拦截器
  11. service.interceptors.request.use(
  12. config => {
  13. if (localStorage.getItem('token')) {
  14. config.headers['token'] = localStorage.getItem('token'); // 让每个请求携带自定义token 请根据实际情况自行修改
  15. }
  16. return config
  17. },
  18. error => {
  19. // Do something with request error
  20. console.log(error) // for debug
  21. Promise.reject(error)
  22. }
  23. )
  24. // response 拦截器
  25. service.interceptors.response.use(
  26. response => {
  27. /**
  28. * code为非200是抛错 可结合自己业务进行修改
  29. */
  30. const res = response.data
  31. if (res.code !== 200) {
  32. Message({
  33. message: res.message,
  34. type: 'error',
  35. duration: 5 * 1000
  36. })
  37. // // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
  38. // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
  39. // MessageBox.confirm(
  40. // '你已被登出,可以取消继续留在该页面,或者重新登录',
  41. // '确定登出',
  42. // {
  43. // confirmButtonText: '重新登录',
  44. // cancelButtonText: '取消',
  45. // type: 'warning'
  46. // }
  47. // ).then(() => {
  48. // store.dispatch('FedLogOut').then(() => {
  49. // location.reload() // 为了重新实例化vue-router对象 避免bug
  50. // })
  51. // })
  52. // }
  53. // return Promise.reject('error')
  54. } else {
  55. return response.data
  56. }
  57. },
  58. error => {
  59. console.log('err' + error) // for debug
  60. Message({
  61. message: error.message,
  62. type: 'error',
  63. duration: 5 * 1000
  64. })
  65. return Promise.reject(error)
  66. }
  67. )
  68. export default service