httpRequest.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import axios from 'axios'
  2. import router from '@/router'
  3. import {Message} from 'element-ui'
  4. const http = axios.create({
  5. baseURL: process.env.VUE_APP_BASE_API,
  6. timeout: 1000 * 30,
  7. withCredentials: true,
  8. headers: {
  9. 'Content-Type': 'application/json; charset=utf-8'
  10. }
  11. })
  12. /**
  13. * 请求拦截
  14. */
  15. http.interceptors.request.use(config => {
  16. // todo 请求头带上token
  17. return config
  18. }, error => {
  19. return Promise.reject(error)
  20. })
  21. /**
  22. * 响应拦截
  23. */
  24. http.interceptors.response.use(response => {
  25. if (response.data.code == 200) {
  26. return response.data.data;
  27. } else {
  28. Message({
  29. message: response.data.message,
  30. type: 'error',
  31. duration: 1500,
  32. customClass: 'element-error-message-zindex'
  33. })
  34. if (response.data.code == 401) {
  35. router.replace("/login");
  36. }
  37. return Promise.reject(response.data)
  38. }
  39. }, error => {
  40. switch (error.response.status) {
  41. case 400:
  42. Message({
  43. message: error.response.data,
  44. type: 'error',
  45. duration: 1500,
  46. customClass: 'element-error-message-zindex'
  47. })
  48. break
  49. case 401:
  50. router.replace("/login");
  51. break
  52. case 405:
  53. Message({
  54. message: 'http请求方式有误',
  55. type: 'error',
  56. duration: 1500,
  57. customClass: 'element-error-message-zindex'
  58. })
  59. break
  60. case 404:
  61. case 500:
  62. Message({
  63. message: '服务器出了点小差,请稍后再试',
  64. type: 'error',
  65. duration: 1500,
  66. customClass: 'element-error-message-zindex'
  67. })
  68. break
  69. case 501:
  70. Message({
  71. message: '服务器不支持当前请求所需要的某个功能',
  72. type: 'error',
  73. duration: 1500,
  74. customClass: 'element-error-message-zindex'
  75. })
  76. break
  77. }
  78. return Promise.reject(error)
  79. })
  80. export default http