uniApp实战四:网络请求封装

文章目录

    • 1.最终效果预览
    • 2.请求封装
    • 3.创建config配置文件
    • 4.创建api请求
    • 5.页面调用

说明:当前笔记基于Vue3开发,HbuilderX版本4.66

1.最终效果预览

QQ_1750843097758

2.请求封装

在util/request.js下创建js文件,代码如下

import config from '@/config'const timeout = 60000function tansParams(params) {let result = ''for (const propName of Object.keys(params)) {const value = params[propName]var part = encodeURIComponent(propName) + "="if (value !== null && value !== "" && typeof(value) !== "undefined") {if (typeof value === 'object') {for (const key of Object.keys(value)) {if (value[key] !== null && value[key] !== "" && typeof(value[key]) !== 'undefined') {let params = propName + '[' + key + ']'var subPart = encodeURIComponent(params) + "="result += subPart + encodeURIComponent(value[key]) + "&"}}} else {result += part + encodeURIComponent(value) + "&"}}}return result
}const request = options => {if (options.params) {let url = options.url + '?' + tansParams(options.params)url = url.slice(0, -1)options.url = url}return new Promise((resolve, reject) => {uni.request({method: options.method || 'get',timeout: options.timeout || timeout,url: config.getProUrl() + options.url,data: options.data,header: options.header,dataType: 'json'}).then(response => {resolve(response.data)}).catch(error => {reject(error)})})
}export default request

3.创建config配置文件

在项目的根目录下创建config.js文件并配置基本的请求路径,代码如下

const config = {baseUrl: 'http://xx.xx.xx.xx:xx',proCode: 'pro_api',getProUrl() {return `${this.baseUrl}/${this.proCode}`;}}export default config

如果项目固定就一个固定的url地址可只写baseUrl,我们是很多地市的项目,并且一个项目可能有十几套子项目,因此会用proCode动态配置

4.创建api请求

在common目录下创建xx.js,根据自己模块定义吧,代码如下

import request from '@/util/request'export function getXXListData(query) {return request({url: '/xx/xxx',method: 'get',params: query})
}

5.页面调用

在页面引入xx.js请求中的getXXListData代码如下

import { getXXListData } from '@/common/xx/xx.js'const getList = () => {let obj = {"key1": "value1","key2": "value2"}getXXListData(JSON.stringify(obj)).then(res => {}).catch(err => {})}

方法中的参数JSON.stringify(obj)要根据自己的接口灵活变动,目前只封装了这个get请求,post请求类似,项目用到了会补充上

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

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

相关文章

MCP协议全解:大模型时代的能力开放与服务集成最佳实践

一、MCP协议是什么? MCP(Model Context Protocol,模型上下文协议)是大模型和多智能体(Agent)生态中,用于标准化描述和传递上下文信息、能力开放、服务集成的协议。它的目标是让不同模型、Agent…

oracle 返回最新记录

在Oracle数据库中,如果你想获取一个表中基于某些条件的最新记录,通常有两种常见的方法:使用ROWID或者使用带有ORDER BY和ROWNUM的子查询。下面我将介绍这两种方法的基本用法。 方法1:使用ROWID 如果你的表有一个时间戳字段或者递…

华为云服务器:Can’t connect to MySql server on ‘localhost’(10060)

本地远程连接服务器数据库,提示10060 在 Ubuntu/Debian 系统中,检查 3306 端口是否开启需要从两个方面验证:MySQL 服务是否监听该端口以及防火墙是否允许外部访问该端口。以下是具体步骤: sudo ufw status查看到为开启mysql端口 …

利用Percona XtraDB Cluster搭建MySql高可用集群

引言拉取镜像创建单节点实例(一般在测试环境中使用)自定义网络(集群间相互隔离)映射数据目录创建docker-compose PXC容器用docker-compose启动PXC集群集群验证数据库负载均衡的必要性Haproxy负载均衡器部署故障排查引言 告别单点故障,拥抱持续可用——构建基于 Percona X…

Leetcode 3592. Inverse Coin Change

Leetcode 3592. Inverse Coin Change 1. 解题思路2. 代码实现 题目链接:3592. Inverse Coin Change 1. 解题思路 这一题的话思路上我们走的是一个贪婪算法的思路,即从小到大依次考察,显然,每一次当前最小的非零面额有且必有当前…

打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体

一、AI智能体的机遇与挑战 最近这两年全民AI热潮开始,各种智能体应用层出不穷。在AI智能体火热的当下,越来越多开发者想要构建自己的智能体,特别是垂直领域,需求更是旺盛。比如招聘助手、电商导购、财经分析师等等。从技术角度来…

嵌入式自学四十八天

时钟 cpu528MHz, PLL:锁相环电路 倍频功能:Fin*n Fout Prescale: 预分频器 降频 Fin/m Fout PFD:相位分子分频器 Fin *n/m Fout 时钟开了后,先到时钟根产生器,对时钟频率更改&…

光谱相机应对复杂环境条件的关键技术与方案

一、极端温度适应性‌ ‌主动温控系统‌ ‌半导体冷却(TEC)‌:维持探测器在5-40℃工作区间,防止高温噪声(如SPECIM FX17)。 ‌散热结构‌:铝合金外壳散热鳍片,工业级相机可在-10℃…

个人技术文档库构建实践:基于Cursor和GitHub的知识管理系统(含cursor rules)

技术选型 核心工具链 Cursor编辑器:AI辅助写作,智能补全和结构优化GitHub:版本控制、跨设备同步、团队协作Markdown:轻量级格式,跨平台兼容,与Git完美集成 与主流工具对比 选择CursorGitHub适合&#xf…

烟花爆竹生产企业库房存储安全风险预警系统

烟花爆竹生产企业库房存储安全风险预警系统是保障库房物资安全、规范作业流程、防范安全事故的重要技术手段,涵盖多个关键预警功能。​ 温湿度预警​ 在库房内安装温湿度传感器,这些传感器如同敏锐的“环境感知员”,能够实时监测库房内环境变…

LINUX 625 DNS域名管理系统

建安错题 根据《安全色》,红、黄、蓝、绿四种安全色各自传递着不同的安全含义和信息,其中表示要求人们必须遵守的规定的颜色是()。 根据《安全色》国家标准(GB 2893-2008),四种安全色的含义如下: ​​红色​​&#…

FastMCP框架进行MCP开发:(三)从SSE升级到SteamableHTTP

一、前言 在MCP(Model Context Protocol)中,Streamable HTTP和SSE(Server-Sent Events)都是用于实现客户端与服务器之间通信的传输机制。然而,它们在设计、功能以及性能表现上有着显著的区别。 二、SSE在…

Android 15 变更及适配攻略

2025年的第一篇Android适配,比以往来的更晚一些。废话不多说,我们开始!! 准备工作 首先将我们项目中的 targetSdk和compileSdk 升至 35。 推荐使用Android Studio Koala Feature Drop | 2024.1.2或更高版本。AGP版本最低升级到…

Vue项目使用defer优化页面白屏,性能优化提升,秒加载!!!

defer表示延迟加载,针对大量节点的渲染加载,结合使用关键帧requestAnimationFrame的形式来分片加载,可以优化白屏时间 知识补充: requestAnimationFrame requestAnimationFrame 是根据帧数来执行回调函数的,就是屏幕…

sentinel与seata组件在微服务中的基本作用

微服务基础内容: 在微服务中,首先学习了微服务的横向拆分与纵向拆分,纵向拆分指按照功能拆分模块,横向拆分指将高复用的模块单独拆分,使纵向拆分的模块去调用这部分内容。 学习了基本拆分后,需要知道微服…

微信点餐小程序—美食物

本项目是基于WAMP Server 和PHP 动态网页技术构建的微信小程序点餐系统,该系统主要分为前端(微信小程序)和后端(基于PHPMySQL服务器端) 整体架构流程 1、前端部分 用户界面:展示菜品、处理用户点餐操作、…

记录Idea运行控制台乱码处理方案

记录Idea运行控制台乱码处理方案 方法1:修改运行配置 打开 Run/Debug Configurations在对应的运行配置中 → 找到 VM Options → 添加: -Dfile.encodingUTF-8 -Dsun.jnu.encodingUTF-8重新运行程序 方法2:强制指定输出流编码 在代码中显…

JVM对象内存分配机制全解析

jvm创建对象的内存分配过程 1、逃逸对象在栈上分配 通过在栈上为对象分配内存,使对象占用的内存空间随着方法结束栈帧弹出而销毁,避免了GC垃圾收集器回收对象,减小GC的压力; 栈上分配内存依赖逃逸分析和标量替换。 逃逸分析: 分析对象的动态作用域逃逸:当一个对象在方…

揭秘OSPF核心:LSA类型与路由计算

一、区域内路由计算 同一区域内中的所有路由器有相同的LSDB LSA关键字段: 【1】LS Age(链路状态老化时间):LSA生存的时间,单位秒 【2】Option(选项字段) 【3】LS Type(链路状…

英文摘要给成中文摘要模型

你现在使用的 UNIMO 项目(PaddlePaddle/Research/NLP/UNIMO),默认是做英文摘要任务,如你在 README 中看到的数据集是 CNN/DailyMail,它是一个 英文摘要数据集。不过,这个项目的架构完全支持中文&#xff0c…