request.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * 封装的axios的工具类
  3. * 负责请求的公共配置,以及请求拦截,响应拦截,错误处理,网络不佳处理
  4. */
  5. import axios from 'axios';
  6. import { Toast, Dialog } from 'vant';
  7. import errorCode from '@/utils/errorCode';
  8. axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
  9. const service = axios.create({
  10. baseURL: process.env.VUE_APP_BASE_API,
  11. // timeout: 30000,
  12. timeout: 0,
  13. withCredentials: true,
  14. });
  15. // request拦截器
  16. service.interceptors.request.use(
  17. (config) => {
  18. config.headers['userId'] = localStorage.getItem('loginName');
  19. return config;
  20. },
  21. (error) => {
  22. Promise.reject(error);
  23. }
  24. );
  25. // 响应拦截器
  26. service.interceptors.response.use(
  27. (res) => {
  28. const code = res.data.code || 200;
  29. const msg = errorCode[code] || res.data.msg || errorCode['default'];
  30. if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
  31. return res.data;
  32. }
  33. if (code === 401) {
  34. Toast('认证信息未通过');
  35. } else if (code === 500) {
  36. // Toast({
  37. // message:msg,
  38. // duration:5000
  39. // });
  40. return res.data;
  41. } else if (code == -1) {
  42. // 图匠图片校验接口超时
  43. return res.data;
  44. } else if (code !== 200) {
  45. Toast({
  46. message: msg,
  47. duration: 5000,
  48. });
  49. } else {
  50. return res.data;
  51. }
  52. },
  53. (error) => {
  54. let { message } = error;
  55. if (message == 'Network Error') {
  56. message = '网络异常';
  57. } else if (message.includes('timeout')) {
  58. message = '请求超时';
  59. } else if (message.includes('Request failed with status code')) {
  60. message = '系统接口' + message.substr(message.length - 3) + '异常';
  61. }
  62. if (error.message === 'canceled') {
  63. console.log('请求被取消:', error.message);
  64. } else {
  65. Toast(message);
  66. }
  67. return Promise.reject(error);
  68. }
  69. );
  70. export default service;