请求函数的封装---工具函数

导出一个通用的请求工具函数,支持设置响应数据类型
支持不同接口设不同的响应数据的类型

import axios, { AxiosError, type Method } from 'axios'// 4. 请求工具函数
const request = (url: string, method: Method = 'GET', submitData?: object) => {return instance.request({url,method,[method.toUpperCase() === 'GET' ? 'params' : 'data']: submitData})
}

加上泛型

//后台返回的数据结构几乎相同,所以可以抽取相同的类型
type Data<T> = {code: numbermessage: stringdata: T
}
// 4. 请求工具函数  toUpperCase()统一为大写,默认为GET
const request = <T>(url: string, method: Method = 'get', submitData?: object) => {return instance.request<T, Data<T>>({url,method,[method.toLowerCase() === 'get' ? 'params' : 'data']: submitData})
}

测试:封装好的请求工具函数

<script setup lang="ts">
import { request } from '@/utils/request'
import type { User } from './types/user'
import { Button as VanButton } from 'vant'
import { useUserStore } from './stores'// 测试,请求拦截器,是否携带token,响应拦截器401拦截到登录地址
const getUserInfo = async () => {const res = await request('/patient/myUser')console.log(res)
}// 测试,响应拦截器,出现非10000的情况,和返回剥离后的数据
const store = useUserStore()
const login = async () => {
//地址('/login/password') 请求方式 ('POST')提交的数据({mobile: '13211112222', password: 'abc12345' })const res = await request<User>('/login/password', 'POST', {mobile: '13211112222',// 密码 abc123456 测试:出现非10000的情况password: 'abc12345'})store.setUser(res.data)
}
</script><template><van-button type="primary" @click="getUserInfo">获取个人信息</van-button><van-button type="primary" @click="login">登录</van-button>
</template>

在这里插入图片描述

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

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

相关文章

【华为OD】静态扫描快速识别源代码的缺陷,静态扫描的结果以扫描报告作为输出

静态扫描快速识别源代码的缺陷,静态扫描的结果以扫描报告作为输出:1. 文件扫描的成本和文件大小相关,如果文件大小为 N ,则扫描成本为 N 个金币2. 扫描报告的缓存成本和文件大小无关,每缓存一个报告需要 M 个金币3. 扫描报告缓存后,后继再碰到该文件则不需要扫描成本,直…

初识MyBatis

1、什么是 MyBatis MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain O…

[LeetCode系列] 30天pandas挑战

很久没有写AI或者Python相关的代码&#xff0c;毕竟现在已经不是一个算法工程师了。所以就用白嫖版的leetcode练练手。 先丢个代码&#xff0c;再慢慢填坑把 import pandas as pd# 1.大的国家&#xff0c;选出面基至少为300万或者人口至少为2500万的国家 # 简单的pandas过滤 …

【数据结构与算法篇】一文详解数据结构之二叉树

树的介绍及二叉树的C实现 一 . 树的概念二 . 相关术语三 . 树的表示四 . 什么是二叉树1> 二叉树的特性2> 特殊的二叉树3> 二叉树的性质 五 . 二叉树的存储结构1> 二叉树的顺序存储2> 二叉树的链式存储 六 . 堆1> 什么是堆2> 用堆存储数据3> 堆的Cpp代码…

木马病毒是怎么进入服务器的,要如何防范

木马病毒通常是基于计算机网络&#xff0c;基于客户端和服务端的通信、监控程序。名称来源于公元前十二世纪希腊和特洛伊之间的一场战争。能够在计算机管理员未发觉的情况下开放系统权限、泄漏用户信息、甚至窃取整个计算机管理使用权限&#xff0c;隐匿性高。 木马病毒的入侵方…

【恋上数据结构】哈夫曼树学习笔记

哈夫曼树 哈夫曼编码&#xff08;Huffman Coding&#xff09; 哈夫曼编码&#xff0c;又称为霍夫曼编码&#xff0c;它是现代压缩算法的基础 假设要把字符串 [ABBBCCCCCCCCDDDDDDEE] 转成二进制编码进行传输。 可以转成 ASCII 编码 (6569&#xff0c;10000011000101) &…

Python脚本模拟真实设备刷视频播放量、浏览量

简述 Python3脚本刷视频播放量 前情提示 系统:centOS7,8阿里云一折优惠云小站_专享特惠_云产品推荐-阿里云 宝塔8.x 一说 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行字样的为提示或者…

C++学习之路(十九)C++ 用Qt5实现一个工具箱(用SQLite数据库来管理粘贴板数据)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《点击按钮以新窗口打开功能面板》功能。今天我们把粘贴板功能用SQLite数据库来管理&#xff0c;用SQLite来实现增删改查。下面我们就来看看如何来规划开发这样的小功能并且添加到我们的工具箱中吧。 老规矩&#xff…

基于51单片机多功能时钟闹钟系统

**单片机设计介绍&#xff0c;基于51单片机多功能时钟闹钟系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的多功能时钟闹钟系统是一种基于单片机的电子设备&#xff0c;能够显示时间、设置闹钟、进行计时以及提…

随机链表的复制[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个长度为n的链表&#xff0c;每个节点包含一个额外增加的随机指针random&#xff0c;该指针可以指向链表中的任何节点或空节点。构造这个链表的深拷贝。深拷贝应该正好由n个全新节点组成&#xff0c;其中每个新节点的值都设为…

sip 用户名密码注册通信流程

SIP&#xff08;Session Initiation Protocol&#xff09;用户注册的通信流程涉及客户端向SIP服务器注册&#xff0c;并在需要时进行身份验证。以下是基本的SIP注册通信流程&#xff0c;其中包含了用户名密码的注册和身份验证&#xff1a; 1. SIP REGISTER 请求: - 客户端&…

Java File类详解(中)

File的常见成员方法 判断、获取相关的方法 方法名称 说明 public boolean isDirectory() 判断此路径名表示的File是否为文件夹 public boolean isFile() 判断此路径名表示的File是否为文件 public boolean exists() 判断此路径名表示的File是否存在 public long lengt…

在 CentOS 7 上使用 `redis` 用户安装 Redis 7.2.3 的完整步骤

在 CentOS 7 上使用 redis 用户安装 Redis 7.2.3 的完整步骤如下&#xff1a; 安装依赖&#xff1a;首先&#xff0c;您需要安装一些必要的软件包&#xff0c;以编译和运行 Redis。打开终端并执行以下命令&#xff1a; sudo yum install gcc make创建 Redis 用户&#xff1a;为…

Hadoop学习笔记(HDP)-Part.18 安装Flink

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

查看Linux服务器的CPU利用率常用的命令

查看Linux服务器的CPU利用率常用的命令 在Linux服务器上&#xff0c;可以使用多种命令来查看CPU的利用率。以下是一些常用的命令&#xff1a; 1 top命令&#xff1a; top 命令是一个实时的系统监视器&#xff0c;可以显示当前系统的 CPU 利用率、内存利用率、进程信息等。在…

sort by modulus of a complex number

描述 复数E包含实部x和虚部y, Exyi;E的模为: 输入n(<1000)和n对(x,y); 按模数升序对复合体进行排序&#xff0c;如果模数相等&#xff0c;则按输入顺序排序。 排序后输出n行of (x_i,y_i,mod_i)&#xff0c;保留2个十进制小数。 输入 输入n和n对(x,y); 输出 输出排序后的n行(…

驱动模块--内核模块

内核模块宏都有什么&#xff0c;分别有什么作用&#xff1f; 1.__init的作用: 展开后为&#xff1a;__attribute__((__section_(".init.text")))实际是gcc的一个特殊链接标记 指示链接器将该函数放置在.init.text区段&#xff0c;在模块插入时方便内核从ko文件指定位…

P=NP?

背景&#xff1a;   2000年5月24日&#xff0c;新罕布什尔州的克莱数学研究所列出了数学和计算机科学中七个未解决的问题。然而&#xff0c;直到今天&#xff0c;这些问题中只有一个被解决了&#xff0c;那就是庞加莱猜想&#xff08;Poincar Conjecture&#xff09;——被俄…

前端】全局替换(replace//g)

//比如\ [] " 以[]为例 var ch"微笑"; var str"[微笑]我是小仙女&#xff01;[微笑]我是小仙女&#xff01;";alert(str.replace(ch,"哈")); //输出 哈我是小仙女&#xff01;[微笑]我是小仙女&#xff01;var encodeeval("/"&q…

手机如何设置防骚扰电话?

很多人都曾接到过烦人的推销电话&#xff0c;这些电话不仅让人感到烦恼&#xff0c;而且有时候还会接二连三地打来&#xff0c;让人不胜其烦。我们的手机号码似乎已经被泄露&#xff0c;很难避免这些骚扰。 有时&#xff0c;我们因无法忍受骚扰电话而选择立即将其拉黑&#xff…