zmaxios.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import axios from 'axios';
  2. import { ElMessage, ElMessageBox } from 'element-plus';
  3. // 配置新建一个 axios 实例
  4. const service = axios.create({
  5. baseURL: 'http://192.168.1.18:8075',
  6. timeout: 50000,
  7. headers: { 'Content-Type': 'application/json' },
  8. });
  9. // 添加请求拦截器
  10. service.interceptors.request.use(
  11. (config) => {
  12. // 在发送请求之前做些什么 token
  13. let token = sessionStorage.getItem('token')
  14. if (token) {
  15. config.headers.common['token'] = token;
  16. }
  17. return config
  18. },
  19. (error) => {
  20. // 对请求错误做些什么
  21. return Promise.reject(error);
  22. }
  23. );
  24. // 添加响应拦截器
  25. service.interceptors.response.use(
  26. (response) => {
  27. // 对响应数据做点什么
  28. const res = response.data;
  29. if (res.code && res.code !== 0 && res.code == !200) {
  30. // `token` 过期或者账号已在别处登录
  31. if (res.code === 401 || res.code === 4001) {
  32. localStorage.clear(); // 清除浏览器全部临时缓存
  33. window.location.href = '/'; // 去登录页
  34. ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
  35. .then(() => {})
  36. .catch(() => {});
  37. }
  38. return Promise.reject(service.interceptors.response);
  39. } else {
  40. return response.data;
  41. }
  42. },
  43. (error) => {
  44. // 对响应错误做点什么
  45. if (error.message.indexOf('timeout') != -1) {
  46. ElMessage.error('网络超时');
  47. } else if (error.message == 'Network Error') {
  48. ElMessage.error('网络连接错误');
  49. } else {
  50. if (error.response.data) ElMessage.error(error.response.statusText);
  51. else ElMessage.error('接口路径找不到');
  52. }
  53. return Promise.reject(error);
  54. }
  55. );
  56. // 导出 axios 实例
  57. export default service;