uniapp + Axios + 小程序封装网络请求

news2025/5/20 19:40:42

前言

小程序自带的网络请求使用起来比较麻烦,不便于管理,就需要封装网络请求,减少繁琐步骤,封装最终效果,根据类别将网络请求封装在文件中,使用得时候调用文件名名称加文件中得自定义名称,就可以了

需要vue2+Axios封装网络请求的点这里
需要vue3+ts+Axios封装网络请求的点这里

安装Axios

 npm install axios
   或者
 yarn add axios

新建network网络请求文件

在这里插入图片描述
index.js:网络请求文件
config.js:自动导入apis文件夹下的所有js文件,需要把apis文件下的文件名写进去
home.js:自定义文件名称,根据自己请求类别进行分类,比home,购物车,等等

index.js 文件

import config from "./config";
// 定义函数完成网络请求
function startNetwork(params) {
  return new Promise((resolve, reject) => {
    uni.request({
      ...params,
      success(res) {
        resolve(res);
        if (res.code != 0) {
          reject(res.msg);
        }else {
          resolve(res);
        }
      },
      fail: () => {
        reject('网络请求失败!');
      }
    })
  });
}
const files = config.files;
//完成文件名称的提取并且将对应文件中的模块数据进行导入
const modules = files.reduce((target, filePath) => {
  const fileName = filePath.replace(/^(\w+)\.(js)$/i, "$1");
  const module = require("./apis/" + filePath);
  for (let key in module) {
    target[fileName + "/" + key] = module[key];
  }
  return target;
}, {});

//设置代理数据完成对modules对象的数据拦截
const proxy = new Proxy(modules, {
  async get(target, key) {
    const params = target[key](target.meta ? target.meta : null);
    const res = await startNetwork(params);
    target.meta = null;
    return res;
  }
});

//定义函数完成网络数据的获取
async function getDatas(keyName, meta = null) {
  if (meta) {
    proxy.meta = meta;
  }
  return await proxy[keyName];
}

export default getDatas;

config.js文件

把apis文件夹下的名称导入,就不用一个一个导入index.js页面了

export default {
	files:[
		"home.js",
	]
}

home.js文件

Header部分这里是我的Header,用的时候替换自己的就可以了

var md5 = require("../../utils/md5.js");
function getHeader() {
    var timestamp = Date.parse(new Date());
    timestamp = parseInt(timestamp / 1000);
    let herder_info = {
        "content-type": "application/json", // 默认值
        "access-token": getToken(),
        "access-sign": md5.hexMD5(timestamp + "c-q-z-n") + "." + timestamp,
    };
    return herder_info;
}
const getToken = function () {
    var token = uni.getStorageSync("token");
    return token;
};

module.exports = {
    xuqiuInfo(mate) {  //网络请求名称,一个文件中名称不可重复
        return {
            method: "GET",
            url: "",//放入你自己的真实的请求地址
            header: getHeader(),
            data: mate,
        };
    },
 
    xuqiuSave(mate) { //网络请求名称,一个文件中名称不可重复
        return {
            method: "POST",
            url:  "",//放入你自己的真实的请求地址
            header: getHeader(),
            data: mate,
        };
    },
};

main.js文件中全局导入

import getDatas from './static/network/index.js'
//完成网络请求的全局挂载 
Vue.prototype.$axios = getDatas

使用方式

home:apis文件下的文件名称
xuqiuSave:home.js文件中的网络请求名称,
然后将网络请求写成对应得函数即可,使用时候调用对应得函数,就可以调用网络请求,使用得时候只需要调用该文件下的对应得请求即可进行网络请求

携带参数

      async xuqiuSave() {
            const res = await this.$axios("home/xuqiuSave", {
                title: this.search,
                status: '',//状态(留空查询全部,0禁用1正常)
                types: '',// 客户分类id (留空查询全部)
                page: this.currentPage,//页码
                limit: '',//每页数量
            });
            console.log("xuqiuSave", JSON.parse(JSON.stringify(res.data)));
        },

不携带参数

      async xuqiuInfo() {
            const res = await this.$axios("home/xuqiuInfo");
            console.log("xuqiuInfo", JSON.parse(JSON.stringify(res.data)));
        },

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

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

相关文章

初始数据库--MySQL

一,数据库(DataBase)概述 思考程序开发中数据存储问题? 变量 int c 10; 对象{名字,价格,颜色} 集合类-->对象 以上方式存储数据都是在内存中存储 程序运行结束后数据都释放了 …

ENSP学习day12

链路聚合–LACP(Link Aggregation Control Protocol) 链路聚合是指将多条物理链路通过一种技术进行绑定,从而形成一个逻辑上更高带宽、更可靠的链路。这种技术能够提高网络传输速率和可靠性,同时实现负载均衡。链路聚合可以在不同…

C++中ShellExecute函数使用方法说明,如果一开始参数为隐藏,后面还能再显示出来吗

文章目录 一、ShellExecute基础用法函数原型关键参数 nShowCmd示例代码:启动程序并隐藏窗口 二、隐藏后能否重新显示窗口直接答案 三、实现隐藏后显示窗口的步骤1. 获取目标窗口句柄2. 显示窗口 四、完整流程示例五、注意事项六、总结 在C中使用ShellExecute函数时&…

MySQL数据库精研之旅第五期:CRUD的趣味探索(上)

专栏:MySQL数据库成长记 个人主页:手握风云 目录 一、CRUD简介 二、Create新增 2.1. 语法 2.2. 示例 三、Retrieve检索 3.1. 语法 3.2. 示例 一、CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作:Create(创建)、Retrieve(检索…

【文件上传】✈️大文件的上传服务器的简单实现

💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时五分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&a…

Windows DOS窗口12个命令

DOS 命令是指在 Windows 命令提示符(CMD)中使用的命令行工具,源于早期的 Disk Operating System。虽然现代 Windows 系统更多使用图形界面,但命令提示符仍然是测试人员的重要工具。测试人员通常需要执行文件操作、测试网络连接、监…

AI加Python的文本数据情感分析流程效果展示与代码实现

本文所使用数据来自于梯田景区评价数据。 一、数据预处理 数据清洗 去除重复值、空值及无关字符(如表情符号、特殊符号等)。 提取中文文本,过滤非中文字符。 统一文本格式(如全角转半角、繁体转简体)。 中文分词与去停用词 使用 jieba 分词工具进行分词。 加载自定义词…

docker启动nacos+redis+seata

docker启动nacos 最新版本的nacos需要再启动的时候设置mysql的一些属性,【也可以先启动nacos,再到配置文件中找到application.yml设置mysql的一些属性】。 1.如果直接启动nacos设置的mysql我们需要确定两个容器的ip都是一样的。 查看mysql容器中的ip命令…

从 select 到 epoll:拆解 I/O 多路复用的演进与实战

目录 一、引言:为什么需要 I/O 多路复用? 二、select 1.函数介绍 2.原理 3.样例代码 4.优缺点总结 三、poll 1.函数介绍 2.样例代码 3.优缺点总结 四、epoll 1.函数介绍 2.原理 3.LT和ET两种工作模式 4.优缺点总结 五、核心机制对比&…

【力扣hot100题】(017)矩阵置零

还是挺简单的&#xff0c;使用哈希表记录需要置换的行列即可&#xff0c;这样就可以避免重复节省时间。 class Solution { public:void setZeroes(vector<vector<int>>& matrix) {unordered_set<int> row;unordered_set<int> line;for(int i0;i&l…

One Commander 3,文件管理新体验

One Commander 3 是一款集多功能于一体 Windows 10/11的文件管理工具&#xff0c;其设计目的在于为用户带来多元化的操作体验。这款工具通过支持多栏界面布局&#xff0c;让用户能够迅速且高效地组织和管理文件。此外&#xff0c;它还提供了多主题选项和多种图标集&#xff0c;…

非手性分子发光有妙招:借液晶之力,实现高不对称圆偏振发光

*本文只做阅读笔记分享* 一、圆偏振发光研究背景与挑战 圆偏振发光&#xff08;CPL&#xff09;材料在3D显示、光电器件等领域大有用处&#xff0c;衡量它的一个重要指标是不对称发光因子&#xff08;glum&#xff09;。早期CPL材料的glum值低&#xff0c;限制了实际应用。为…

YOLOv8+ Deepsort+Pyqt5车速检测系统

该系统通过YOLOv8进行高效的目标检测与分割&#xff0c;结合DeepSORT算法完成目标的实时跟踪&#xff0c;并利用GPU加速技术提升处理速度。系统支持模块化设计&#xff0c;可导入其他权重文件以适应不同场景需求&#xff0c;同时提供自定义配置选项&#xff0c;如显示标签和保存…

【干货】前端实现文件保存总结

⚠️⚠️文前推荐一下&#x1f449; 前端必备工具推荐网站(图床、API和ChatAI、智能AI简历、AI思维导图神器等实用工具): 站点入口&#xff1a;http://luckycola.com.cn/ 前端实现文件保存实现总结 在Web开发中&#xff0c;文件下载是常见的交互需求。本文将系统总结前端实现文…

并发编程之FutureTask.get()阻塞陷阱:深度解析线程池CPU飚高问题排查与解决方案

FutureTask.get方法阻塞陷阱&#xff1a;深度解析线程池CPU飚高问题排查与解决方法 FutureTask.get()方法阻塞陷阱&#xff1a;深度解析线程池CPU飚高问题排查与解决方法1、情景复现1.1 线程池工作原理1.2 业务场景模拟1.3 运行结果1.4 发现问题&#xff1a;线程池没有被关闭1.…

在Ubuntu中固定USB设备的串口号

获取设备信息 lsusb # 记录设备的Vendor ID和Product ID&#xff08;例如&#xff1a;ID 0403:6001&#xff09;# 获取详细属性&#xff08;替换X和Y为实际设备号&#xff09; udevadm info -a /dev/ttyUSBX 结果一般如下 创建udev规则文件 sudo gedit /etc/udev/rules.d/us…

javaSE————文件IO(2)、

文件内容的读写——数据流 我们对于文件操作使用流对象Stream来操作&#xff0c;什么是流对象呢&#xff0c;水流是什么样的&#xff0c;想象一下&#xff0c;水流的流量是多种的&#xff0c;可以流100ml&#xff0c;也可以流1ml&#xff0c;流对象就和水流很像&#xff0c;我…

前端常问的宏观“大”问题详解(二)

JS与TS选型 一、为什么选择 TypeScript 而不是 JavaScript&#xff1f; 1. 静态类型系统&#xff1a;核心优势 TypeScript 的静态类型检查能在 编译阶段 捕获类型错误&#xff08;如变量类型不匹配、未定义属性等&#xff09;&#xff0c;显著减少运行时错误风险。例如&…

智慧电力:点亮未来能源世界的钥匙

在科技日新月异的今天&#xff0c;电力行业正经历着前所未有的变革。智慧电力&#xff0c;作为这一变革的核心驱动力&#xff0c;正逐步改变着我们对电力的认知和使用方式。它不仅是电力行业的一次技术革新&#xff0c;更是推动社会可持续发展、实现能源高效利用的重要途径。 智…

架构师面试(二十三):负载均衡

问题 今天我们聊微服务相关的话题。 大中型微服务系统中&#xff0c;【负载均衡】是一个非常核心的组件&#xff1b;在微服务系统的不同位置对【负载均衡】进行了实现&#xff0c;下面说法正确的有哪几项&#xff1f; A. LVS 的负载均衡一般通过前置 F5 或是通过 VIP keepa…