刚出炉热乎的。UniApp X 封装 uni.request

HBuilder X v4.66 当前最新版本

由于 uniapp x 使用的是自己包装的 ts 语言 uts。目前语言还没有稳定下来,各种不支持 ts 各种报错各种不兼容问题。我一个个问题调通的,代码如下:

封装方法

TypeScript 复制代码
// my-app/utils/request.uts
const UNI_APP_BASE_URL = "http://192.168.1.1:8080"	// 开发环境
// const UNI_APP_BASE_URL = "http://test.com"	// 测试环境
// const UNI_APP_BASE_URL = "http://pro.com"	// 正式环境

type JsonResult = {
	code : number;	// 状态码
	data ?: any;	// 返回数据
	msg ?: string;	// 返回消息
}

export function get(uri : string, data : any = {}) : Promise<JsonResult> {
	const url = UNI_APP_BASE_URL + uri;
	return new Promise((resolve, reject) => {
		uni.request<JsonResult>({
			url,
			method: "GET",
			data,
			success: (response) => {
				const jsonResult = response.data
				if (jsonResult != null) {
					if (jsonResult.code != 0) {
						uni.showToast({ title: jsonResult.msg ?? "出错了", icon: 'none' })
					}
					resolve(jsonResult);
				}
			}, fail: (err) => {
				console.error("错误信息:", err)
				uni.showToast({ title: "app 错误 " + err.errMsg, icon: 'none' })
				reject(err);
			}
		})
	})
}

export function post(uri : string, data : any = {}) : Promise<JsonResult> {
	const url = UNI_APP_BASE_URL + uri;
	return new Promise((resolve, reject) => {
		uni.request<JsonResult>({
			url,
			method: "POST",
			data,
			success: (response) => {
				const jsonResult = response.data
				if (jsonResult != null) {
					if (jsonResult.code != 0) {
						uni.showToast({ title: jsonResult.msg ?? "出错了", icon: 'none' })
					}
					resolve(jsonResult);
				}
			}, fail: (err) => {
				console.error("错误信息:", err)
				uni.showToast({ title: "app 错误 " + err.errMsg, icon: 'none' })
				reject(err);
			}
		})
	})
}

如下使用:

TypeScript 复制代码
<script setup lang="uts">
	import { post } from '@/utils/request.uts';
	async function login() {
		try {
			const jsonResult = await post("/login", { mobile: "11111111111", code: "111111", grantType: "sms" });
			console.log("请求返回数据:", jsonResult);
		} catch (err) {
			console.error("请求失败:", err);
		}
	}
	login();
</script>
相关推荐
FungLeo2 小时前
成为全栈·React 管理后台篇·总复盘:从“接口能调通”到“后台值得使用”
前端·react.js·前端框架·项目复盘·成为全栈
Csvn3 小时前
并发模式:让渲染学会排队、插队和让路
前端
可乐鸡翅yeah_4 小时前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
Flynt4 小时前
Linear 用 1000 个 PR 换掉 styled-components,我写了 200 个按钮,把这笔账复现了一遍
前端·css·preact
JavaGuide5 小时前
NVIDIA 又开源了!这次给 AI Agent 加上权限管控
前端·后端
excel5 小时前
prisma 如何处理数据库竞态
前端·数据库·后端
莪_幻尘6 小时前
Skill 体检:30 个 Skill 全凭感觉?体检器先自曝了 8 个“假 0 分
前端·人工智能·llm
风骏时光牛马6 小时前
AI模型综合能力评测:性能、指令遵循与多场景实测对比
前端
Frag0ut6 小时前
Chrome与Chromium内核浏览器在Windows 11上的新特性全景解析
前端·chrome·windows·web安全·chromium·gemini ai·playready drm
hiahiahia1237 小时前
实现完整 Tool Dispatcher
开发语言·前端