当前位置: 首页 > news >正文

uniapp+vue3+ts请求接口封装

1.安装luch-request

yarn add luch-request
npm install luch-request

2.新建文件src/utils/request.ts
需要自己修改config.baseURL和token(获取存储的token)

// 
import HttpRequest from 'luch-request';
import type { HttpRequestConfig, HttpResponse, HttpError, HttpTask } from "luch-request";
// * 请求响应参数(包含data)
export interface Result {code: numbermessage: stringsuccess?: boolean
}
export interface ResultData<T = any> extends Result {data: T
}
export const ResultEnum = {SUCCESS: 200,EXPIRE: [305, 601, 602],ERROR: -1,ERRMESSAGE: '请求失败',TIMEOUT: 25000,TYPE: 'success'
} as const// 创建 HTTP 请求实例
const request = new HttpRequest();
// 全局配置
request.setConfig((config) => {/* config 为默认全局配置*/// config.baseURL = 'https://www.example.com' /* 根域名 */// 判断环境设置不同的baseURLconfig.timeout = ResultEnum.TIMEOUTconfig.baseURL = "https://...../"//import.meta.env.VITE_APP_NODE_ENV === 'development' ? import.meta.env.VITE_APP_BASE_API : import.meta.env.VITE_APP_BASE_URLreturn config
})
// 请求拦截器
request.interceptors.request.use((config) => {// 在发送请求之前做些什么,比如添加 tokenconst token = uni.getStorageSync("accessToken"); // 获取你的 tokenif (token) {config.header = { ...config.header, Authorization: `Bearer ${token}` };}return config;},(error) => {// 对请求错误做些什么return Promise.reject(error);}
);// 响应拦截器
request.interceptors.response.use((response) => {// 对响应数据做点什么// 可以根据状态码进行全局错误处理if (response.statusCode === 200) {return response.data;} else {const status = response?.statusCode// 处理 HTTP 网络错误let message = ''if (status === 401) {uni.removeStorage({key: 'accessToken',success: function (res) {uni.showModal({title: "提示",content: "身份已过期,将跳转登录!",showCancel: false,success: (res) => {if (res.confirm) {uni.navigateTo({url: '/pages/login/login'})}}});},})} else {switch (status) {case 403:message = '拒绝访问'breakcase 404:message = '请求地址错误'breakcase 500:message = '服务器故障'breakdefault:message = '网络连接故障'}uni.showToast({title: message,icon: 'error'})}return Promise.reject(response);}},(error) => {// 对响应错误做点什么const status = error?.statusCode// 处理 HTTP 网络错误let message = ''if (status === 401) {uni.removeStorage({key: 'accessToken',success: function (res) {uni.showModal({title: "提示",content: "身份认证失败,将跳转登录!",showCancel: false,success: (res) => {if (res.confirm) {uni.navigateTo({url: '/pages/login/login'})}}});},})} else {switch (status) {case 403:message = '拒绝访问'breakcase 404:message = '请求地址错误'breakcase 500:message = '服务器故障'breakdefault:message = '网络连接故障'}uni.showToast({title: message,icon: 'error'})}return Promise.reject(error);}
);
const http = {get<T>(url: string, params?: object, config?: HttpRequestConfig): Promise<ResultData<T>> {return request.get(url, { params, ...config })},post<T>(url: string, data?: object, config?: HttpRequestConfig): Promise<ResultData<T>> {return request.post(url, data, config)},put<T>(url: string, data?: object, config?: HttpRequestConfig): Promise<ResultData<T>> {return request.put(url, data, config)},delete<T>(url: string, data?: object, config?: HttpRequestConfig): Promise<ResultData<T>> {return request.delete(url, data, config)}
}
export default http;

3.使用

import http from '@/utils/request'try {const response = await http.get("接口名",{ id: 11409 });console.log(response,'测试:1.需要身份验证token,2.不需要身份验证,3.带参数请求接口')} catch (error) {console.error('Failed to fetch data:', error);}

相关文章:

uniapp+vue3+ts请求接口封装

1.安装luch-request yarn add luch-requestnpm install luch-request2.新建文件src/utils/request.ts 需要自己修改config.baseURL和token&#xff08;获取存储的token&#xff09; // import HttpRequest from luch-request; import type { HttpRequestConfig, HttpRespons…...

【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN

实验 4&#xff1a;生成树协议STP的功能以及虚拟局域网VLAN 一、 实验目的 加深对生成树协议STP的功能的理解。 了解虚拟局域网VLAN。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证交换机生成树协议STP的功能 (1) 第一步&#xff1a;构建网络拓…...

基于Matlab BP神经网络的电力负荷预测模型研究与实现

随着电力系统的复杂性和规模的不断增长&#xff0c;准确的电力负荷预测对于电网的稳定性和运行效率至关重要。传统的负荷预测方法依赖于历史数据和简单的统计模型&#xff0c;但这些方法在处理非线性和动态变化的负荷数据时&#xff0c;表现出较大的局限性。近年来&#xff0c;…...

java 21 多线程

1.相关概念 进程: 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存空间。当我们使用迅雷&#xff0c;又启动了一个进程&#xff0c;操作系统将为迅雷配新的内存空间。 进程是程序的一次执行过程&#…...

Rust学习笔记_07——枚举和范围

Rust学习笔记_04——引用 Rust学习笔记_05——控制流(1) Rust学习笔记_06——控制流(2) 文章目录 1. 枚举1.1基础1.2 给枚举变体起个“别名”1.3 枚举与匹配&#xff08;match&#xff09; 2. 范围2.1 介绍2.2 半开区间范围2.3 包含范围的语法糖2.4 步长范围&#xff08;Range …...

40分钟学 Go 语言高并发:服务性能调优实战

服务性能调优实战 一、性能优化实战概述 优化阶段主要内容关键指标重要程度瓶颈定位收集性能指标&#xff0c;确定瓶颈位置CPU、内存、延迟、吞吐量⭐⭐⭐⭐⭐代码优化优化算法、并发、内存使用代码执行时间、内存分配⭐⭐⭐⭐⭐系统调优调整系统参数、资源配置系统资源利用率…...

Windows通过指令查看已安装的驱动

Windows通过指令查看已安装的驱动 在 Windows 操作系统中&#xff0c;有几种命令可以用来查看已安装的驱动程序。以下是常见的几种方法&#xff1a; 1. 使用 pnputil 查看已安装驱动程序 pnputil 是一个 Windows 内置工具&#xff0c;可以列出所有已安装的驱动程序包。 命令…...

Windows 11 如何配置node.js

一&#xff0c;官网下载 官网首页 下载最新LTS版本&#xff0c;比较稳定&#xff0c;如果想探索更新的版本去探索新的nodejs功能。 1. 下载完成后&#xff0c;双击运行程序&#xff0c;点击next 2. 勾选接受协议&#xff0c;点击next 3. 选择自己的安装路径&#xff08;默认是…...

AWTK fscript 中的 串口 扩展函数

fscript 是 AWTK 内置的脚本引擎&#xff0c;开发者可以在 UI XML 文件中直接嵌入 fscript 脚本&#xff0c;提高开发效率。本文介绍一下 fscript 中的 ** 串口 扩展函数 ** 1.iostream_serial_create 创建串口输入输出流对象。 原型 iostream_serial_create(device) > ob…...

yolov11剪枝

思路&#xff1a;yolov11中的C3k2与yolov8的c2f的不同&#xff0c;所以与之前yolov8剪枝有稍许不同&#xff1b; 后续&#xff1a;会将剪枝流程写全&#xff0c;以及增加蒸馏、注意力、改loss&#xff1b; 注意&#xff1a; 1.在代码105行修改pruning.get_threshold(yolo.mo…...

智慧地图聚合(LockMap)标注系统开发说明文档

智慧地图聚合(LockMap)标注系统开发说明文档 1. 系统概述 智慧地图聚合(LockMap)标注系统是一个专为处理大规模地理信息数据而设计的综合解决方案。通过后端高效的数据管理和前端直观的地图展示&#xff0c;该系统能够实现对海量地理位置点的有效可视化。本项目旨在提供一个用…...

「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器

本篇将带你实现一个简单的数字滚动抽奖器。用户点击按钮后&#xff0c;屏幕上的数字会以滚动动画的形式随机变动&#xff0c;最终显示一个抽奖数字。这个项目展示了如何结合定时器、状态管理和动画实现一个有趣的互动应用。 关键词 UI互动应用数字滚动动画效果状态管理用户交…...

cuda12.1版本的pytorch环境安装记录,并添加到jupyter和pycharm中

文章目录 前置准备使用anaconda prompt创建虚拟环境创建虚拟环境激活pytorch虚拟环境把pytorch下载到本地使用pip把安装包安装到pytorch环境中进入python环境检验是否安装成功将环境添加到jupyter在pycharm中使用该环境&#xff1a; 前置准备 安装anaconda&#xff0c;我的版本…...

Linux: network: nic: mellanox MRU初现

文章目录 在PPP协议了有提到过总结-吐槽MRU初现兼容问题详细的MRU的计算幸运下面这个commit缩小了幸运机会So在PPP协议了有提到过 MRU在RFC4638里有提到。但是在Linux内核里是的Ethernet是没有相关的概念。 总结-吐槽 说Mellanox的网卡驱动在2018年做了一个对进入packet的大…...

深入理解红黑树的底层逻辑

一、红黑树的定义 红黑树是一种自平衡的二叉查找树&#xff0c;每个节点都带有额外的颜色信息&#xff0c;可以是红色或黑色。红黑树的目的是通过引入颜色信息来确保树的平衡&#xff0c;从而提高查找、插入和删除等操作的效率。 二、红黑树的性质 每个节点都有颜色&#xf…...

【数据结构】手搓链表

一、定义 typedef struct node_s {int _data;struct node_s *_next; } node_t;typedef struct list_s {node_t *_head;node_t *_tail; } list_t;节点结构体&#xff08;node_s&#xff09;&#xff1a; int _data;存储节点中的数据struct node_s *_next;&#xff1a;指向 node…...

ThinkPHP场景动态验证

一、缘由 今天在用thinkphp8写东西的时候发现&#xff0c;写验证器规则和场景优点费时间&#xff0c;就算用tinkphp的命令行生成也是生成一个空壳。内容还是要自己填写感觉麻烦。 就突发奇想能不能自动生成验证器&#xff0c;也不能是说自动生成验证器&#xff0c;生成验证其的…...

在M3上面搭建一套lnmp环境

下载docker-desktop 官网下载docker-desktop 切换镜像源 {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docke…...

【C++笔记】二叉搜索树

前言 各位读者朋友们大家好&#xff01;上期我们讲完了面向对象编程三大属性之一的多态&#xff0c;这一期我们再次开始数据结构二叉搜索树的讲解。 目录 前言一. 二叉搜索树的概念二. 二叉搜索树的性能分析三. 二叉搜索树的插入四. 二叉搜索树的查找五. 二叉搜索树的删除六.…...

Fork/Join框架简介

一、Fork/Join框架简介 Fork/Join框架是Java 7引入的一个用于并行执行任务的框架&#xff0c;它可以将一个大任务分割成若干个小任务&#xff0c;并行执行这些小任务&#xff0c;然后将每个小任务的结果合并起来&#xff0c;得到大任务的结果。这种框架特别适合于能够被递归分…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...