Uniapp + Vue3 封装请求工具挂载全局

新建request.js工具类

const http = {
	// baseUrl 地址
	baseUrl: 'http://localhost:8080',

	// 请求方法
	request(config) {
		// config:请求配置对象,具体参照uniapp文档
		config = beforeRequest(config)
		// 请求地址拼接
		config.url = this.baseUrl + config.url
		// 异步请求
		return new Promise((resolve, reject) => {
			uni.request(config).then(res => {
				// 响应拦截
				const response = beforeResponse(res)
				resolve(response)
			}).catch(err => {
				errorHandle(err)
				reject(err)
			})
		})

	},
	get(url, data, auth, loading) {
		/*
		url:接口地址
		data:查询参数
		auth:请求是否携带token进行认证(true/false)
		method:请求方式
		*/
		return this.request({
			url: url,
			data: data,
			auth: auth,
			timeout: 10000,
			method: 'GET',
			loading: loading
		})
	},
	post(url, data, auth) {
		/*
		url:接口地址
		data:请求体参数
		auth:请求是否携带token进行认证(true/false)
		method:请求方式
		*/
		return this.request({
			url: url,
			data: data,
			auth: auth,
			timeout: 10000,
			method: 'POST'
		})
	},
	put(url, data, auth) {
		/*
		url:接口地址
		data:请求体参数
		auth:请求是否携带token进行认证(true/false)
		method:请求方式
		*/
		return this.request({
			url: url,
			data: data,
			auth: auth,
			timeout: 10000,
			method: 'PUT'
		})
	},
	delete(url, data, auth) {
		/*
		url:接口地址
		auth:请求是否携带token进行认证(true/false)
		method:请求方式
		*/
		return this.request({
			url: url,
			auth: auth,
			timeout: 10000,
			method: 'DELETE'
		})
	}
}

// 请求拦截器
const beforeRequest = (config) => {
	// 请求之前拦截操作
	console.log('请求拦截器', config)
	if (!config.loading) {
		uni.showLoading({
			title: '拼命请求中',
			mask: true,
		})
	} else {
		uni.showLoading({
			title: config.loading,
			mask: true,
		})
	}
	config.header = {}
	if (config.auth && config.auth != undefined) {
		// 请求头中添加token
		if (uni.getStorageSync('token')) {
			// Authorization    Bearer   根据情况修改
			config.header['Authorization'] = 'Bearer ' + uni.getStorageSync('token')
		} else {
			// 为登陆则跳转登陆 重定向
			uni.navigateTo({
				url: '/pages/index/index'
			})
		}
	}
	return config
}

// 响应拦截器
const beforeResponse = (response) => {
	// 请求之后操作
	console.log('响应拦截器', response)
	setTimeout(()=>{
		uni.hideLoading();
	},2000)
	// 判断请求返回的状态码
	if (response.status !== 200 && response.status !== 201 && response.status !== 204) {
		// 给出对应的提示
		if (response.data.error) {
			uni.showToast({
				title: response.data.error.toString(),
				icon: 'none',
				duration: 2000
			})
		}
	}
	return response
}

// 请求异常处理器
const errorHandle = ((err) => {
	console.log('请求异常', err)
})

export default http

在main文件中全局挂载、

// 导入封装的请求对象
import http from '@/util/request.js'
app.config.globalProperties.$http = http

在vue页面中使用

import type { ComponentInternalInstance } from 'vue'
const { proxy } = getCurrentInstance() as ComponentInternalInstance


// 使用默认的loading
const response = await proxy?.$http.get('/auth/tenant/list')
// 自定义的loading
const response1 = await proxy?.$http.get('/auth/tenant/list',null,null,'loading')

备注:Vue3不可以像vue2那样子通过this对象去调用全局挂载对象,需要使用 getCurrentInstance 方法获取proxy 对象。

运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux Centos 配置 Docker 国内镜像加速

在使用 Docker 进行容器化部署时,由于国外的 Docker 镜像源速度较慢,我们可以配置 Docker 使用国内的镜像加速器,以提高下载和部署的效率。本文将介绍如何在 CentOS 系统上配置 Docker 使用国内镜像加速。 步骤一:安装 Docker 首…

最新时报!即将开业的新工厂将推出量产人形机器人

原创 | 文 BFT机器人 世界上第一个工厂批量生产的人形机器人即将在太平洋西北地区开业。 Agility Robotics首席执行官谢尔顿在一次采访中谈到,一旦达到“顶峰”,公司将在其“RoboFab”工厂生产10000个机器人,这就是量产的意思了,…

基础硬件、实施运维工程师与操作系统的介绍

目录 一、实施与运维 1.2 实施运维一般做什么 1.1.1实施工程师 1.1.2运维工程师 1.3 实施运维需要具备哪些技能 三、基础硬件 四、操作系统 4.1 Windows 4.2 Linux 4.3 macOS 4.4 Unix 五、总结 一、实施与运维 1.1 实施运维是干什么的 1、运维工程师负责服务的稳…

java 4.数组

文章目录 4.数组4.1数组的概念4.2 数组的定义4.3 数组的初始化4.4 数组下标的有效范围与常见异常4.5 数组内存分析4.6 二维数组4.6.1 创建二维数组4.6.2 二维数组的赋值4.6.3 多维数组4.6.4 通过二维数组输出不同版式的古诗 4.7 不规则数组4.8 数组的基本操作4.8.1 数组遍历4.8…

Leetcode 55 跳跃游戏

题意理解: 非负整数数组 nums, 最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 需要跳到nums最后一个元素即为成功。 目标:是否能够跳到最后一个元素。 解题思路: 使用贪心算法来解题,需要理解…

神经网络:激活函数层知识点

1.激活函数的作用,常用的激活函数有哪些 激活函数的作用 激活函数可以引入非线性因素,提升网络的学习表达能力。 常用的激活函数 Sigmoid 激活函数 函数的定义为: f ( x ) 1 1 e − x f(x) \frac{1}{1 e^{-x}} f(x)1e−x1​ 如下图…

推荐几个好用的开源无代码/低代码开发平台

一、什么是无代码/低代码开发 无代码/低代码开发是一种可视化的应用程序开发方法,使用具有拖放组件和模型驱动逻辑组合的图形界面。无代码/低代码开发试图降低从软件技术平台、产品和服务中提取价值的进入壁垒。低代码开发平台被称为可视化集成开发环境&#xff08…

美颜技术详解:深入了解视频美颜SDK的工作机制

本文将深入探讨视频美颜SDK的工作机制,揭示其背后的科技奥秘和算法原理。 1.引言 视频美颜SDK作为一种集成到应用程序中的技术工具,通过先进的算法和图像处理技术,为用户提供令人印象深刻的实时美颜效果。 2.视频美颜SDK的基本工作原理 首…

node.js mongoose schemaTypes

目录 官方文档 简介 SchemaType 示例 配置SchemaType规则 通用规则 特定schemaType规则 String Number Date Map monggose会根据shcemaType将文档值转换成指定的类型 官方文档 Mongoose v8.0.3: SchemaTypes 简介 SchemaTypes是在使用Mongoose时,用于…

Elementor Pro 完整模板套件5000个登陆页面和1000个模板描说明

一、引言 Elementor Pro 是 WordPress 的一款强大且功能丰富的页面构建插件。它提供了完整的模板套件和登陆模板,使得用户能够轻松创建各种类型的页面和网站。本文将详细介绍 Elementor Pro 的完整模板套件和登陆模板的功能和使用方法。 二、Elementor Pro 完整模板套件 模板…

OSPF面试总结

OSPF 基本特点 属于IGP、LS支持无类域间路由没有环路(区域内运行LS、区域间是DV,所以所有的区域要和区域0相连)收敛速度快使用组播发送数据 224.0.0.5、224.0.0.6 什么时候用224.0.0.5?支持多条等价路由支持协议报文认证 OSPF路由的计算过程…

C#中的协变和逆变

这两个都是只能使用在接口和委托上 个人理解: 协变:出参,让基类使用范围变大,将父类/基类当作子类一样使用 --为什么这样规定呢? 我的理解:真正实现的是子类,子类拥有所有的方法,却…

项目从0到1,架构选型 :单体架构优先考虑

当我听到关于团队使用微服务架构的故事时,我注意到了一个共同的现象。 几乎所有成功的微服务故事都是从一个过于庞大的庞然大物开始的,后来这个庞然大物被拆分了我所听说的几乎所有从零开始构建微服务系统的案例,最终都陷入了严重的麻烦。 …

【JVM基础】 JVM 如何加载一个类以及类加载机制

文章目录 1、什么时候一个类会被加载?1、包含 main 方法的主类2、非 包含 main 方法的主类,什么时候去加载? 3、类加载器如何加载一个类?1、验证阶段:2、准备阶段:3、解析阶段:4、初始化&#x…

智能化安防与监控:全球发展、挑战与未来趋势

导言 智能化安防与监控系统在全球范围内得到广泛应用,成为社会安全和公共管理的重要工具。本文将深入研究其发展历程、遇到的问题及解决过程、未来的可用范围,以及在各国的应用和未来的研究趋势,以探讨在哪些方面能取胜,并在哪些方…

uniapp-uni-icons组件@click.stop失败解决~

你们好,我是金金金。 场景 可以看见我右侧有两个icon,点击的时候 会影响到折叠面板的打开,这让我很是苦恼,然后我使用了click.stop修饰符阻止事件冒泡 排查 排查之前我先贴一下代码 报错截图 可以看到找不到属性stopPropagation&…

【逆向分析篇】APK逆向脱壳过程

【逆向分析篇】APK逆向脱壳过程 简单写下Android应用(APK)的逆向脱壳过程—【蘇小沐】 文章目录 【逆向分析篇】APK逆向脱壳过程(一)Apk的文件结构1、META-INF目录1)MANIFEST.MF文件2)CERT.SF文件3&#x…

HackTheBox - Medium - Windows - Aero

Aero 这个机器利用了今年比较新的cve,关于windows11的漏洞,类似于lnk、scf,但这个危害更高,通过易受攻击的windows11 利用theme、msstyles来实现RCE. Aero 是一台中等难度的 Windows 机器,最近有两个 CVE:…

手把手教你创建一个实时互动的AI数字人直播间!

数字人是什么?数字人是利用人工智能技术实现与真人直播形象的1:1克隆,即克隆出一个数字化的你自己,包括你的形象、表情、动作和声音都会被克隆下来,让你能够拥有接近真人的表现力。 1.首先您需要独立部署青否数字人SaaS系统&#…

2023 英特尔On技术创新大会直播 | 窥探未来科技的边界

2023 英特尔On技术创新大会直播 | 窥探未来科技的边界 写在最前面观后感其他有趣的专题课程 写在最前面 嘿,你是不是对科技和创新充满好奇?2023 英特尔 On 技术创新大会线上活动邀请你一起探索最前沿的科技世界! 这不仅是一场普通的聚会&…