vue3+ts+axios封装

需要安装 axios,qs
yarn add axios
npm i axios 
cnpm i axios
yarn add qs
npm i qs
cnpm i qs

在src/API/axios.ts

import axios from 'axios';
import qs from "qs";

axios.defaults.baseURL = "/api";    //  请求地址统一配置到vite.config.ts中代理
axios.defaults.headers.post["Content-Type"] = "application/json";
// axios.defaults.headers.post["X-Requested-With"] = "XMLHttpRequest";
axios.defaults.timeout = 20000; //设置请求超时时间

// 请求拦截器
axios.interceptors.request.use(
  (config) => {
    // 可以在这里添加请求头、认证token等
    // 例如:config.headers['Authorization'] = 'Bearer ' + token;
    return config;
  },
  (error: any) => {
    // 请求错误处理
    return Promise.reject(error);
  }
);

// 响应拦截器
axios.interceptors.response.use(
  (response) => {
    return response;
  },
  (error: any) => {
    // 响应错误处理
    return Promise.reject(error);
  }
);

function checkStatus(response: any) {
  return new Promise((resolve, reject) => {
    if (response && (response.status === 200 || response.status === 304 || response.status === 400)) {
      try {
        resolve(response.data);
      } catch (e) {
        //抛出异常
        console.log(e)
      }
    } else {
      try {
        console.log("网络异常,请检查网络连接是否正常!")
      } catch (e) {
        //抛出异常
        console.log(e)
      }
    }
  });
}
export default {
  post(url: any, params: any) {
    return axios({
      method: "post",
      url,
      data: params
    }).then(response => {
      return checkStatus(response);
    });
  },
  get(url: any, params?: any) {
    params = qs.stringify(params);
    return axios({
      method: "get",
      url,
      params
    }).then(response => {
      return checkStatus(response);
    });
  }
};

vite.config.ts
特别注意: target: 后面在加上/api,否则会报404

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://xxxxxxxxx/api', // 目标服务器地址
        changeOrigin: true, // 是否改变源地址
        rewrite: (path) => path.replace(/^\/api/, ''), // 重写路径
        // 可以配置更多选项,如 logLevel, timeout 等
      },
    },
  },
})

 

posted @ 2024-09-27 13:51  龙卷风吹毁停车场  阅读(116)  评论(0编辑  收藏  举报