前端api(请求后端)简易template

微信小程序 API 模块模板

基本 API 模块结构

/*** 示例API模块*/
const api = require('../api');
const config = require('../../config/index');// 示例API对象
const exampleApi = {// API方法定义...
};// 导出模块
module.exports = exampleApi;

标准 RESTful 请求方法

获取列表数据

/*** 获取列表数据* @param {Object} params - 查询参数* @param {boolean} showLoading - 是否显示加载提示* @returns {Promise} Promise对象*/
getList: (params, showLoading = true) => {return api.get('/example/list', params, showLoading);
},

获取详情数据

/*** 获取详情数据* @param {string} id - 记录ID* @param {boolean} showLoading - 是否显示加载提示* @returns {Promise} Promise对象*/
getDetail: (id, showLoading = true) => {return api.get(`/example/${id}`, {}, showLoading);
},

提交数据

/*** 提交数据* @param {Object} data - 提交的数据* @param {boolean} showLoading - 是否显示加载提示* @returns {Promise} Promise对象*/
submit: (data, showLoading = true) => {return api.post('/example/submit', data, showLoading);
},

更新数据

/*** 更新数据* @param {string} id - 记录ID* @param {Object} data - 更新的数据* @param {boolean} showLoading - 是否显示加载提示* @returns {Promise} Promise对象*/
update: (id, data, showLoading = true) => {return api.put(`/example/${id}`, data, showLoading);
},

删除数据

/*** 删除数据* @param {string} id - 记录ID* @param {boolean} showLoading - 是否显示加载提示* @returns {Promise} Promise对象*/
delete: (id, showLoading = true) => {return api.delete(`/example/${id}`, {}, showLoading);
},

自定义请求方法

直接使用 wx.request 的请求

/*** 使用wx.request的直接请求示例* @param {Object} params - 请求参数* @param {boolean} showLoading - 是否显示加载提示* @returns {Promise} Promise对象*/
customRequest: (params, showLoading = true) => {return new Promise((resolve, reject) => {// 获取tokenconst token = wx.getStorageSync(config.TOKEN_KEY);if (showLoading) {wx.showLoading({title: '加载中',mask: true});}wx.request({url: `${config.HOST_URL}/example/custom`,method: 'GET',data: params || {},header: {'Content-Type': 'application/json','Authorization': token ? `Bearer ${token}` : ''},success: (res) => {if (showLoading) {wx.hideLoading();}console.log('请求结果:', res.data);if (res.data && (res.data.code === 0 || res.data.code === 200)) {resolve(res.data);} else {console.error('请求失败:', res.data);reject({code: res.data?.code || -1,message: res.data?.message || '请求失败',data: res.data?.data || null});}},fail: (err) => {if (showLoading) {wx.hideLoading();}console.error('请求失败:', err);reject({code: -1,message: '网络请求失败',data: null});}});});
},

文件上传方法

/*** 上传文件示例* @param {string} filePath - 文件路径* @param {boolean} showLoading - 是否显示加载提示* @returns {Promise} Promise对象*/
uploadFile: (filePath, showLoading = true) => {return new Promise((resolve, reject) => {if (!filePath) {reject({code: 400,message: '文件路径不能为空',data: null});return;}const token = wx.getStorageSync(config.TOKEN_KEY);if (showLoading) {wx.showLoading({title: '上传中',mask: true});}wx.uploadFile({url: `${config.HOST_URL}/example/upload`,filePath: filePath,name: 'file',header: {'Content-Type': 'multipart/form-data','Authorization': token ? `Bearer ${token}` : ''},success: (res) => {if (showLoading) {wx.hideLoading();}let response;try {response = JSON.parse(res.data);} catch (e) {reject({code: -1,message: '解析响应失败',data: null});return;}if (response && (response.code === 0 || response.code === 200)) {resolve(response);} else {reject({code: response?.code || -1,message: response?.message || '上传失败',data: response?.data || null});}},fail: (err) => {if (showLoading) {wx.hideLoading();}reject({code: -1,message: '网络请求失败: ' + (err.errMsg || ''),data: null});}});});
}

使用说明

  1. 将模板复制到 api/modules/ 目录下的新文件中,例如 api/modules/example.js
  2. 修改模块名称、API路径和方法名称以适应你的需求
  3. api/index.js 中导入和导出你的新API模块:
// 导入新的API模块
const exampleApi = require('./modules/example');module.exports = {// 已有的模块...exampleApi
};
  1. 在页面中使用API:
const { exampleApi } = require('../../api/index');Page({data: {// 页面数据},onLoad: function() {this.loadData();},loadData: function() {exampleApi.getList().then(res => {// 处理成功响应this.setData({list: res.data});}).catch(err => {// 处理错误wx.showToast({title: err.message,icon: 'none'});});}
});
pleApi.getList().then(res => {// 处理成功响应this.setData({list: res.data});}).catch(err => {// 处理错误wx.showToast({title: err.message,icon: 'none'});});}
});

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

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

相关文章

leetcode 1035. Uncrossed Lines

题目描述 本题本质上就是求nums1和nums2的最长公共子序列的长度。因此本题本质上与第1143题一模一样。 代码&#xff1a; class Solution { public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {//本题等价于求nums1和nums2的最长公…

如何动态调整Python爬虫的Request请求延迟

引言 在网络爬虫开发中&#xff0c;合理控制请求延迟&#xff08;Request Delay&#xff09;是避免被封禁、提高爬取效率的关键。固定延迟&#xff08;如 **<font style"color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">time.sleep(1)</font…

QSS【QT】

文章目录 QSSid选择器 & 类型选择器伪类选择器盒子模型 QSS 设置样式的时候&#xff0c;是可以指定某个控件来设置的。 指定控件之后&#xff0c;此时的样式就会针对这个指定的控件&#xff0c;也会针对子控件生效 ui->pushButton_2->setStyleSheet("QPushButt…

学习笔记二十二—— 并发五大常见陷阱

⚠️ 并发五大常见陷阱 目录 数据竞争 (Data Race)死锁 (Deadlock)竞态条件 & 饿死现象 (Race Condition & Starvation)悬挂指针 (Dangling Pointer)重复释放 (Double Free)开发自查清单 1. 数据竞争 (Data Race) 专业定义 两个及以上线程在缺乏同步的情况下同时访问同…

ESP32- 开发笔记- 硬件设计-ESP32-C3基本电路

ESP32的最小电路 1 ESP32固件下载 ESP32 有多种下载(烧录)固件的方式,具体选择取决于开发环境和硬件连接。以下是常见的几种下载方式: 1.1 USB 串口下载(最常用) 适用场景:通过 USB 转串口芯片(如 CP2102、CH340)连接电脑,使用 esptool 或其他工具烧录固件。这里…

Qt6文档阅读笔记-RESTful API Server解析

本例使用QHttpServer创建RESTful API服务端。 此例接收REST风格的请求&#xff0c;与此例与之对应的客户端是RESTful Color Palette API client。 满足REST限制的API被称为RESTful风格的API。 RESTful API服务端一般包括&#xff1a;create、read、update、delete操作。 其中…

HarmonyOS 基础语法概述 UI范式

ArkUI框架 - UI范式 ArkTS的基本组成 装饰器&#xff1a; 用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊的含义。如上述示例中Entry、Component和State都是装饰器&#xff0c;Component表示自定义组件&#xff0c;Entry表示该自定义组件为入口组件&#xff0c;Stat…

Docker镜像基本概念与构建指南

Docker镜像基本概念与构建指南 一、Docker镜像基本概念 Docker镜像是容器运行的基础&#xff0c;包含应用程序及其运行所需的文件系统、依赖库、环境变量和配置。其核心特性包括&#xff1a; 只读性&#xff1a;镜像本身不可修改&#xff0c;容器运行时在镜像层之上创建可写…

如何避免 CDN 缓存泄漏用户隐私数据

CDN 通过将内容缓存到全球各地的边缘服务器上,显著缩短了数据传输的物理距离,从而加速了内容的交付。然而,这一技术在提升性能的同时,也悄然埋下了一颗隐私隐患的种子——缓存数据可能被不当访问或泄漏,进而暴露用户的敏感信息。 目录 禁用对用户个人信息的缓存 仅缓存…

软考中级数据库系统工程师学习资料分享

软考中级数据库系统工程师考试对于很多 IT 从业者和计算机专业的大学生来说&#xff0c;是一个重要的职业资格认证。它不仅能够提升个人的专业技能&#xff0c;还能为职业发展增添有力的砝码。今天&#xff0c;我将为大家分享一套全面且实用的学习资料&#xff0c;帮助大家更好…

数据处理: 均值漂移聚类(Mean Shift)

一、 基本原理 Mean Shift是一种基于密度的非参数聚类算法&#xff0c;不需要预先指定簇的数量&#xff0c;而是通过寻找数据空间中密度最大的区域来自动确定聚类中心, 适合图像分割和目标跟踪等。 算法步骤 初始化&#xff1a;对每个数据点作为起点。 迭代&#xff1a;计算…

辛格迪客户案例 | 苏州富士莱医药GMP培训管理(TMS)项目

一、案例概述 富士莱医药股份有限公司位于美丽的江南水乡常熟&#xff0c;前身为常熟富士莱医药化工有限公司&#xff0c;从建厂初期面积仅有10余亩&#xff0c;逐步扩展到100余亩。近年来公司飞速发展&#xff0c;以黑马姿态发展成为中国专业生产硫辛酸系列产品、肌肽系列产品…

SQL注入相关知识

一、布尔盲注 1、布尔盲简介 布尔盲注是一种SQL注入攻击技术&#xff0c;用于在无法直接获取数据库查询结果的情况下&#xff0c;通过页面的响应来判断注入语句的真假&#xff0c;从而获取数据库中的敏感信息 2、布尔盲注工作原理 布尔盲注的核心在于利用SQL语句的布尔逻辑…

Linux基础学习--linux的文件权限与目录配置

linux的文件权限与目录配置 1.用户与用户组 在Linux中&#xff0c;每个文件都有相当多的属性和权限&#xff0c;其中最重要的概念就是文件的拥有者。 1.1 文件拥有者 Linux是一个多人多任务的系统&#xff0c;常常有多人共用一台主机的情况出现&#xff0c;因此在系统中可以…

【数据可视化-19】智能手机用户行为可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个…

vue项目通过GetCapabilities获取wmts服务元数据信息并在openlayers进行叠加显示

vue项目通过openlayers加载wmts服务示例&#xff1a; <template><div id"map" ref"mapContainer"></div> </template><script> import ol/ol.css; import Map from ol/Map; import View from ol/View; import TileLayer fr…

JavaWeb学习打卡-Day1-分层解耦、Spring IOC、DI

三层架构 Controller&#xff08;控制层&#xff09;&#xff1a;接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据。Service&#xff08;业务逻辑层&#xff09;&#xff1a;处理具体的业务逻辑。DAO&#xff08;数据访问层/持久层&#xff09;&#xff…

【含文档+PPT+源码】基于Python爬虫二手房价格预测与可视化系统的设计与实现

项目介绍 本课程演示的是一款基于Python爬虫二手房价格预测与可视化系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项…

游戏引擎学习第229天

仓库:https://gitee.com/mrxiao_com/2d_game_5 回顾上次内容并介绍今天的主题 上次留下的是一个非常简单的任务&#xff0c;至少第一步是非常简单的。我们需要在渲染器中加入排序功能&#xff0c;这样我们的精灵&#xff08;sprites&#xff09;才能以正确的顺序显示。为此我…

【“星瑞” O6 评测】—NPU 部署 face parser 模型

前言 瑞莎星睿 O6 (Radxa Orion O6) 拥有高达 28.8TOPs NPU (Neural Processing Unit) 算力&#xff0c;支持 INT4 / INT8 / INT16 / FP16 / BF16 和 TF32 类型的加速。这里通过通过官方的工具链进行FaceParsingBiSeNet的部署 1. FaceParsingBiSeNet onnx 推理 首先从百度网盘…