axios.js 1.77 KB
/*
 * @Author: hookehuyr hookehuyr@gmail.com
 * @Date: 2022-05-28 10:17:40
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2025-06-13 09:56:29
 * @FilePath: /mlaj/src/utils/axios.js
 * @Description:
 */
import axios from 'axios';
import router from '@/router';
// import qs from 'Qs'
// import { strExist } from '@/utils/tools'

// axios.defaults.baseURL = 'http://localhost:3000/api';
axios.defaults.params = {
  f: 'behalo',
};

/**
 * @description 请求拦截器
 */
axios.interceptors.request.use(
  config => {
    // const url_params = parseQueryString(location.href);
    // GET请求默认打上时间戳,避免从缓存中拿数据。
    const timestamp = config.method === 'get' ? (new Date()).valueOf() : '';
    /**
     * POST PHP需要修改数据格式
     * 序列化POST请求时需要屏蔽上传相关接口,上传相关接口序列化后报错
     */
    // config.data = config.method === 'post' && !strExist(['a=upload', 'upload.qiniup.com'], config.url) ? qs.stringify(config.data) : config.data;
    // 绑定默认请求头
    config.params = { ...config.params, timestamp }
    return config;
  },
  error => {
    // 请求错误处理
    return Promise.reject(error);
  });

/**
 * @description 响应拦截器
 */
axios.interceptors.response.use(
  response => {
    if (response.data && response.data.code === 401) {
      // 清除用户登录信息
      localStorage.removeItem('currentUser');
      // 跳转到登录页面,并携带当前路由信息
      const currentPath = router.currentRoute.value.fullPath;
      router.push(`/login?redirect=${encodeURIComponent(currentPath)}`);
      // router.push(`/login`);
    }
    return response;
  },
  error => {
    // 响应错误处理
    return Promise.reject(error);
  });

export default axios;