首页 > 其他分享 >vue3+ts+axios封装

vue3+ts+axios封装

时间:2024-09-27 13:44:44浏览次数:1  
标签:qs axios return ts any params vue3 response

需要安装 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 等
      },
    },
  },
})

 

标签:qs,axios,return,ts,any,params,vue3,response
From: https://www.cnblogs.com/tlfe/p/18435542

相关文章

  • 关闭PerfWatson2.exe 体验改善计划
    关闭PerfWatson2.exe体验改善计划 VS2022:帮助——隐私声明——隐私设置 VS2022之前版本:帮助——隐私声明——隐私设置上开机,打开visualstudio,发现电脑慢得象蜗牛,还卡卡滴。任务管理器里一看,有一个不知道什么的PerfWatson2.exe在狂跑就下图中的这家伙度娘了一下,原......
  • 学习011-03-03 Relationships Between Persistent Objects in Code and UI(代码和用户
    RelationshipsBetweenPersistentObjectsinCodeandUI(代码和用户界面中持久对象之间的关系)Whendesigningabusinessmodel,itcanbenecessarytosetspecificrelationshipsbetweenbusinessobjects.Thistopicdescribeshowtosettheserelationshipsbe......
  • TS 中的接口和继承
    接口概念:接口主要是做类型规范约束,在进行传值的时候必须按照接口规范类型接口语法:interface接口名{xxx}例:interfacePerson{name:string}//定义一个接口此处定义规范interfaceIPerson{firstName:string//姓氏lastName:......
  • 在 ArkTS 中,如何有效地进行内存管理和避免内存泄漏?
    ArkTS是鸿蒙生态的应用开发语言,它在TypeScript的基础上进行了优化和定制,以适应鸿蒙系统的需求。以下是在ArkTS中进行有效的内存管理和避免内存泄漏:1.使用const和let合理声明变量:使用const声明那些不会重新赋值的变量,这有助于确保变量的不变性,并可能让编译器进行更......
  • SQL常用数据过滤 - EXISTS运算符
            SQL查询中的EXISTS运算符用于检查查询子句是否存在满足特定条件的记录,如果有一条或者多条记录存在,则返回True,否则返回False。语法结构SELECTcolumn_name(s)FROMtable_nameWHEREEXISTS(SELECTcolumn_nameFROMtable_nameWHEREcondition);EXISTS直接......
  • 网络性能监控的秘密武器:深入解析 netstat 命令
    在性能测试中,网络性能往往是影响系统响应速度的关键因素之一。网络瓶颈可能源于延迟、带宽不足、连接数过多等问题。本文结合netstat命令的输出案例,详细解释网络性能的监控方法,并提供如何使用这些数据进行瓶颈定位的实战经验。1.网络瓶颈的常见表现网络瓶颈通常表现为......
  • P10681 COTS/CETS 2024 奇偶矩阵 Tablica
    P10681COTS/CETS2024奇偶矩阵Tablica来自qnqfff大佬的梦幻dp。约定二元组\((n,m)\)表示一个\(n\)行\(m\)列的矩形。不添加说明的子问题,限制与题面一致。思路先考虑放最后一行,发现你填的位置经过变换后可以得到其他的结果,也就是说只要乘上变换的方案数就可以任......
  • 易优CMS致命错误,联系技术支持:Call to undefined function eyPreventShell()-eyoucms
    当你遇到 core/helper.php 第146行左右出现致命错误,并且提示 CalltoundefinedfunctioneyPreventShell() 时,通常是因为某个自定义函数未被定义或未被正确引入。以下是一些具体的解决步骤:步骤1:检查函数定义定位 eyPreventShell 函数查找 eyPreventShell 函数的......
  • TS系列(3):常用类型(详细)
    你好,我是沐爸,欢迎点赞、收藏、评论和关注。TS系列(1):TS是什么?如何使用?TS系列(2):类型声明、类型推断和类型总览接着前两天的聊,说下TypeScript的常用类型,这是重点。七、常用类型1.anyany的含义是:任意类型,一旦将变量类型限制为any,那就意味着放弃了对该变量的类型检查。//......
  • 检查 Effect-TS 选项中的元素:实用指南
    effect-ts提供了检查option是否包含特定值的方法。这些函数允许您使用自定义等价函数或默认等价来确定选项中是否存在值。在本文中,我们将探讨检查选项中元素的两个关键函数:o.containswith和o.contains。示例1:使用o.containswith检查具有自定义等效性的元素概......