项目那点儿事(二十三) 齐格飞失踪了
囊垦判浪一、概述uni-app x 提供了 uni.request() 方法。uni.request({url: https://api.example.com,method: GET})在实际项目开发中直接使用 uni.request 会带来诸多问题例如重复代码多如每次都要写 baseURL错误处理分散难以统一管理缺乏请求/响应拦截能力Token 注入繁琐Loading 状态管理混乱为了解决这些问题封装一个统一的 HTTP 请求库是企业级开发的最佳实践。二、封装requestuview-plus 自带一个 http 模块但是在实际项目中还是要自己封装一个统一管理。在项目根目录创建utils目录在里面创建request.ts。 注意文件后缀必须是ts而不是js复制代码// utils/request.tsimport { http } from uview-plus/* 1. 全局配置 */http.setConfig((config) {config.baseURL https://api.example.com // api地址config.timeout 8000 // 单位毫秒对应8秒config.loadingText 加载中...config.loading true // 开启 loading 动画return config})/* 2. 请求拦截 */http.interceptors.request.use((config) {const token uni.getStorageSync(token)if (token) config.header.Authorization Bearer ${token}return config})/* 3. 响应拦截 */http.interceptors.response.use((response) response.data,(err) {// ?? 强制断言让 UTS 闭嘴(uni as any).$u.toast(err.message || 网络错误)return Promise.reject(err)})export default http复制代码修改 main.uts引入 request并挂载为全局属性$http复制代码import App from ./App.uvueimport { createSSRApp } from vueimport uviewPlus from uview-plus/* 1. 引入 request里面已经初始化好 http */import http from /utils/requestexport function createApp() {const app createSSRApp(App)/* 2. 挂到全局属性 */app.config.globalProperties.$http httpapp.use(uviewPlus)return {app}}复制代码三、使用request由于在main.uts挂载了全局属性因此在pages里面的uvue文件就可以直接调用了。比如get请求const res await this.$http.get(/test, {})post请求const res await this.$http.post(/login, {username: admin,password: 123456})post请求增加成功和失败处理复制代码async login() {try {/* 成功分支 */const res await this.$http.post(/login, {username: admin,password: 123456})// 这里只写“成功后的业务”uni.setStorageSync(token, res.token)this.$u.toast(登录成功)uni.switchTab({ url: /pages/index/index })} catch (err: any) {/* 失败分支 */// 拦截器已弹通用提示这里可做“额外”处理console.error(登录失败, err)if (err.statusCode 401) {this.$u.toast(账号或密码错误)}}}复制代码post请求局部请求不想显示 loadingawait this.$http.post(/log, data, { loading: false })uview-plus 的 http 模块已经内置了 “请求开始自动显示 loading响应结束自动隐藏” 的机制你只需要 把 loading 开关打开 即可成功/失败/超时都会 统一自动关闭无需手动处理。效果调用 this.$http.get/post 瞬间 → 出现 uview-plus 的 loading 遮罩请求 成功/失败/超时 → 遮罩 自动消失由 uview 内部 finally 关闭无需自己 uni.showLoading() / uni.hideLoading()post请求增加header复制代码await this.$http.post(/upload, body, {header: {Content-Type: application/x-wwwz-form-urlencoded,X-Custom: abc123}})复制代码put请求const res await this.$http.put(/test, {id:1})delete请求const res await this.$http.delete(/test, {id:1})四、登录页面login.uvue复制代码复制代码效果如下image针对大型项目可以在utils里面新建一个api.ts用来编写一些公用业务函数例如复制代码import http from ./request.js/* 登录 */export const login (username, pwd) http.post(/login, { username, pwd })/* 轮播图 */export const getBanner () http.get(/banner)/* 商品列表 */export const getGoods (params) http.get(/goods, { params })复制代码然后在pages里面的页面就可以调用了无需重复写函数。复制代码复制代码注意直接调用要用异步函数名前面加async

相关新闻

2026实测:4款免费的低代码平台,中小企业/个人开发者必看

2026实测:4款免费的低代码平台,中小企业/个人开发者必看

在2026年的今天,低代码早已不是新鲜词,但“免费”这两个字依然充满诱惑与陷阱。很多打着免费旗号的平台,用着用着就会发现:用户数限制、应用数锁死、导出要钱、高级功能全得付费——所谓的免费,不过是试用期的另一种说…

2026/7/3 3:16:34 阅读更多 →
基于FPGA技术的数字存储示波器设计探讨

基于FPGA技术的数字存储示波器设计探讨

一、研究背景与意义随着电子技术的快速发展,电子系统的复杂度不断提升,对信号测量与分析设备提出了更高要求。示波器作为电子测试领域最重要的基础仪器之一,被广泛应用于通信系统、嵌入式系统、电源设计以及数字电路调试等领域。传统模拟示波…

2026/5/17 11:55:53 阅读更多 →
山东大学软件学院计算机图形学实验

山东大学软件学院计算机图形学实验

课程名称:计算机图形学 授课老师:王鹏飞老师 实验代码:Ting-Song-q/SDU_CG_exphttps://github.com/Ting-Song-q/SDU_CG_exp 实验要求: 老师的要求是在三个小实验:mesh网格,光线、B-Spline曲线以及两个大…

2026/5/17 11:55:53 阅读更多 →

最新新闻

如何快速上手BiSheng JDK 17?Linux平台安装与配置完整指南

如何快速上手BiSheng JDK 17?Linux平台安装与配置完整指南

如何快速上手BiSheng JDK 17?Linux平台安装与配置完整指南 【免费下载链接】bishengjdk-17 BiSheng JDK 17 is a high-performance, production-ready distribution of OpenJDK 17. 项目地址: https://gitcode.com/openeuler/bishengjdk-17 前往项目官网免费…

2026/7/3 19:04:52 阅读更多 →
猫抓浏览器插件:你的终极网页资源嗅探与下载解决方案

猫抓浏览器插件:你的终极网页资源嗅探与下载解决方案

猫抓浏览器插件:你的终极网页资源嗅探与下载解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容无处不在的今天&#x…

2026/7/3 19:00:51 阅读更多 →
从数据分布角度理解:为什么不同任务要用不同的损失函数?

从数据分布角度理解:为什么不同任务要用不同的损失函数?

从数据分布角度理解:为什么不同任务要用不同的损失函数? 一、先说清楚:损失函数到底是什么? 在机器学习里,我们可以先把模型想象成一个“会猜答案的机器”。 给它一个输入,比如一张图片、一段文字、一个学生的学习时长,它会输出一个预测结果。 比如: 输入:学习时间…

2026/7/3 18:58:50 阅读更多 →
三重降压转换方案在嵌入式系统中的应用与优化

三重降压转换方案在嵌入式系统中的应用与优化

1. 为什么需要三重降压转换方案在嵌入式系统和工业控制领域,多电压轨供电已经成为标配需求。以典型的ARM Cortex-M4应用为例,核心处理器需要1.2V供电,外设接口需要3.3V,而模拟电路部分则可能需要1.8V。传统方案采用多个独立DC-DC转…

2026/7/3 18:58:50 阅读更多 →
ppt模板_0139_黑蝙蝠侠

ppt模板_0139_黑蝙蝠侠

PPT模板分享

2026/7/3 18:56:50 阅读更多 →
LLM安全护栏工程实战2026:多层防御体系下的Prompt注入、越狱与内容审核

LLM安全护栏工程实战2026:多层防御体系下的Prompt注入、越狱与内容审核

引言 2026年,当AI Agent被部署到金融交易、医疗诊断、法律咨询等关键领域时,安全问题从"锦上添花"变成了"生死攸关"。AAAI 2026上,LLM安全相关的论文数量同比增长了300%。Prompt注入已被OWASP列为LLM应用十大安全风险之首…

2026/7/3 18:56:50 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻