v3+ts/request封装axios

 1.创建一个新的axios实例

2.请求拦截器,如果有token进行头部携带

3.响应拦截器a.剥离无效数据b.处理token失效

4.导出一个函数,调用当前的axios实例发请求,返回值promise

import axios, { AxiosError, type Method } from 'axios'
import { useUserStore } from '@/stores/user' //pinia存储
import router from '@/router'
import { showToast } from 'vant'
//导出基准地址,原因:其他地方不是通过axios发请求的地方用上基准地址
const baseURL = 'https://consult-api.itheima.net/'
const instance = axios.create({
//axios的一些配置,baseUrl timeoutbaseURL,// 基础地址。超时时间timeout: 10000
})
// 请求拦截器,携带toekn
instance.interceptors.request.use(
//config是请求配置(config) => {const store = useUserStore()if (store.user?.token && config.headers) {
//请求头设置tokenconfig.headers['Authorization'] = `Bearer ${store.user?.token}`}return config},(err) => Promise.reject(err)
)
// 响应拦截器 ,剥离无效数据,401拦截
instance.interceptors.response.use((res) => {// 后台约定,响应成功,但是code不是10000,是业务逻辑失败if (res.data?.code !== 10000) {showToast(res.data?.message || '业务失败')return Promise.reject(res.data)}// 业务逻辑成功,返回成功数据,作为axios成功的结果return res.data},(err) => {if (err.response.status === 401) {// 删除用户信息const store = useUserStore()store.delUser()//   跳转登录,带上接口失效所在页面的地址,登录完成后回跳使用router.push({path: 'login',// 将当前页面的完整路径作为值存储在"returnUrl"键下query: { returnUrl: router.currentRoute.value.fullPath }})}return Promise.reject(err)}
)type Data<T> = {code: numbermessage: stringdata: T
}// 4. 请求工具函数
const request = <T>(url: string,method: Method = 'get',submitData?: object
) => {// request<数据类型,数据类型>() 这样才指定了 res.data 的类型return instance.request<T, Data<T>>({url,method,
//1.如果是get请求,需要使用params来传递submitData     ?a=10&c=10
//2.如果不是get请求,需要使用data传递submitData      请求体传参
//[]设置一个动态的key,写js表达式,js表达式的执行结果来当key
//methods参数:get,Get,GET转换成消息再来判断[method.toLocaleLowerCase() === 'get' ? 'params' : 'data']: submitData})
}
export { instance, baseURL, request }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

散列函数的基本概念

散列函数 算法不能设计太过复杂 太复杂的散列函数&#xff0c;势必会消耗很多计算时间 散列函数生成的值要尽可能随机并且均匀分布 这样才能避免或者最小化散列冲突而且即便出现来冲突&#xff0c;散列到每个槽里的数据也会比较平均&#xff0c;不会出现某个槽内数据特别多…

AI芯片战场的迁徙:从训练到推理的深度剖析

在人工智能技术的飞速发展中&#xff0c;AI芯片作为底层硬件支撑&#xff0c;一直是技术创新的核心推手。近年来&#xff0c;一个显著的行业趋势是&#xff0c;AI芯片的主战场正悄然从模型训练向推理应用转移。这一转变背后&#xff0c;蕴含着技术发展、市场需求、以及经济效益…

使用Spyder进行Python编程和代码调试

Spyder的官方网站是获取其最新版本和下载安装包的最安全和直接的方式。您可以访问以下网址来下载Spyder&#xff1a; 官方网站下载页面: Home — Spyder IDE 在这个页面上&#xff0c;您会看到不同的下载选项&#xff0c;根据您的操作系统&#xff08;Windows, macOS, Linux&…

使用 Oracle SQL Developer 导入数据

使用 Oracle SQL Developer 导入数据 1. 导入过程 1. 导入过程 选择要导入数据的表&#xff0c; 然后单击右键&#xff0c;选择"导入数据"&#xff0c; 浏览本地文件&#xff0c;选择正确的工作表&#xff0c; 按默认&#xff0c; 按默认&#xff0c; 根据情况修改&…

2. 机器学习概述

机器学习是对能通过经验自动改进的计算机算法的研究。 ---汤姆. 米切尔 1997 通俗来讲&#xff0c;机器学习就是让计算机从数据中进行自动学习&#xff0c;得到某种知识&#xff08;或规律&#xff09;。在早期的工程领域&#xff0c;机器学习也经常被称为模式识别&#xff08;…

React 使用 Zustand 详细教程

前言 Redux、MobX 和 Context API 等技术的存在&#xff0c;使得管理大型应用的状态变得更加可行。本教程要深入探讨的是 Zustand —— 一个极简且高效的状态管理库&#xff0c;详细介绍如何在 React 项目中使用 Zustand 来管理状态。 什么是 Zustand&#xff1f; Zustand 是…

现在的AI大模型,业已进入到泛滥成灾的发展阶段

我们都知道&#xff0c;现在的AI大模型&#xff0c;可以说&#xff0c;业已进入到泛滥成灾的发展阶段。 但凡是一个科技玩家&#xff0c;基本上都会推出自己的大模型。 从某种意义上来讲&#xff0c;AI大模型业已成为一个前瞻性的战略角色&#xff0c;蜕变成为了一种标配角色…

guli商城业务逻辑-基础篇笔记

这里写目录标题 0.1 viscode设置用户代码片段1.实现多级菜单接口1.1 对接前端菜单1.2 对接网关接口解决跨域问题&#xff0c;如果不解决跨域&#xff0c;浏览器还是访问不了api1.3 把商品服务添加网关1.4 修改前端显示分类菜单1.5 给菜单添加删除修改功能1.5.1 删除功能的后端业…

Oracle 入门--前提

目录 1.sqlplus 2.dual是什么&#xff1f; 3.SQL语句的种类 4.Oracle是如何工作的 5.Oracle查看配置文件 6.修改配置文件 7.常用的参数设置 1.sqlplus 管理数据库&#xff1a;启动&#xff0c;关闭&#xff0c;创建&#xff0c;删除对象......查看数据库的运行状态&…

【分布式计算】java消息队列机制

消息队列是一种在不同组件或应用之间进行数据传递的技术&#xff0c;通常用于处理异步通信。它允许消息的发送者&#xff08;生产者&#xff09;和接收者&#xff08;消费者&#xff09;之间进行解耦。 概念 消息队列是一种先进先出&#xff08;FIFO&#xff09;的数据结构&…

中介子方程二十

X$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpXVX$XdXuXWXπX$XWXyXWX$XπXWXuXdX$XVXpX$XyXtXkXrXiXαX$XiXαXyXEX$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpXVX$XdXuXWXπX$XWXyXWX$XπXWXuXdX$XVXpX$XyXtXkXrXiXαX$XiXαXyXEX$XαXηXtXαX$XWXyX$XyXWX$XpXαXqXηX$XeXαXhX$XdX$XpX$XdX$…

Web前端开发12章:深入探索与实战解析

Web前端开发12章&#xff1a;深入探索与实战解析 在数字化浪潮的推动下&#xff0c;Web前端开发技术日新月异&#xff0c;成为了构建互联网应用的重要基石。本文将以12章的篇幅&#xff0c;从四个方面、五个方面、六个方面和七个方面&#xff0c;深入探索Web前端开发的精髓&am…

【INTEL(ALTERA)】Nios® II无法使用基于 Ubuntu 18.04.5 的 WSL 进行构建

现象 在使用 Ubuntu 18.04.5 构建 WSL 的Nios II处理器时&#xff0c;任何英特尔 Quartus Prime 软件版本都可能会看到此问题。 原因 这是因为在 Nios II Command Shell 中运行命令 “wslpath -u .”时返回值不同。 正常工作&#xff1a;命令返回”。故障&#xff1a;命令返回…

机器学习(V)--无监督学习(一)聚类

根据训练样本中是否包含标签信息&#xff0c;机器学习可以分为监督学习和无监督学习。聚类算法是典型的无监督学习&#xff0c;目的是想将那些相似的样本尽可能聚在一起&#xff0c;不相似的样本尽可能分开。 相似度或距离 聚类的核心概念是相似度(similarity)或距离(distance…

PyTorch 拼接与拆分-Tensor基本操作

拼接&#xff1a; cat, stack … 使用 cat 在指定维度 dim 上拼接: torch.cat(element_list, dim) >>> a torch.rand(2,3) >>> b torch.rand(1,3) >>> c torch.cat([a,b], dim0) >>> c.shape torch.Size([3, 3])使用 stack 在新增维…

嵌入式学习记录6.14(练习)

#include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);this->resize(1028,783); //设置左侧背景QLabel *lab1new QLabel(this);lab1->…

uniapp使用vue3打包H5,android或ios加载白屏

前景介绍 按照uniapp官方文档介绍&#xff0c;根据步骤创建了使用Vue3的项目&#xff1b;执行命令npm run build:h5, 本地安装了http-server&#xff0c;打包之后的dist文件夹&#xff0c;执行http-server后&#xff0c;可以访问&#xff1b; 但是使用Android或者ios进行本地加…

【内存管理之堆内存】

1.栈上的基元 2.栈上的聚合对象 3.手动分配和释放 4.分配堆内存 5.数组内存分配和释放 6.数组内存分配 7.不要使用野指针 8.黑暗时代

STM32理论 —— μCOS-Ⅲ(2/2):时间管理、消息队列、信号量、任务内嵌信号量/队列、事件标志、软件定时器、内存管理

文章目录 9. 时间管理9.1 OSTimeDly()9.2 OSTimeDlyHMSM()9.3 OSTimeDlyResume()9.4 延时函数实验 10. 消息队列10.1 创建消息队列函数OSQCreate()10.2 发送消息到消息队列函数(写入队列)OSQPost()10.3 获取消息队列中的消息函数(读出队列)OSQPend()10.4 消息队列操作实验 11. …

12 款 Android 照片恢复应用程序列表

丢失难忘的照片总是令人痛苦的。如果软件崩溃或意外删除&#xff0c;Android 设备上的照片也可能会丢失。这时照片恢复应用程序就派上用场了。查看我们为 Android 收集的顶级照片恢复应用程序。 但是&#xff0c;您不会想为自己选择任何照片恢复应用程序。因此&#xff0c;我们…