当前位置: 首页 > news >正文

Uniapp(Vue2)Api请求封装

一、目录

├── api                # 业务接口目录
│   └── api.js         # 所有请求接口汇总
└── utils              # 工具目录└── request.js     # 网络请求核心封装

二、API封装

1、request

// utils/request.js
/*** 网络请求核心函数(直接硬编码基础域名)* @param {Object} options - 请求配置(url、method、data等)* @returns {Promise} - 请求结果Promise*/
function request(options = {}) {// 基础域名const baseUrl = 'http://localhost:8080'; // 替换为你的后端固定域名// 1. 拼接完整请求地址options.url = `${baseUrl}${options.url}`;// 2. 设置默认请求头(JSON格式)options.header = {'content-type': 'application/json',...options.header // 允许自定义请求头};// 3. 处理请求结果return new Promise((resolve, reject) => {// 成功回调options.success = (res) => {// 按后端约定,code=200为成功(需根据实际调整)if (res.data.code !== 200) {uni.showToast({icon: 'none',duration: 3000,title: res.data.msg || '请求失败'});reject(res.data);return;}resolve(res.data.data); // 返回核心数据};// 失败回调(网络错误等)options.fail = (err) => {uni.showToast({icon: 'none',duration: 3000,title: '网络异常,请重试'});reject(err);};// 发起请求uni.request(options);});
}export default request;

2、api

直接集中管理所有业务请求,无需按模块拆分:

// api/api.js
import request from '../utils/request.js';// 示例1:获取用户列表
export function getAllList(params) {return request({url: '/api/users', // 接口路径(会拼接baseUrl)method: 'GET',params});
}// 示例1:根据ID查询用户
export function getUserById(params) {return request({url: `/api/users/${params}`, // 接口路径(会拼接baseUrl)method: 'GET'});
}// 示例2:新增用户
export function addUser(data) {return request({url: '/api/users',method: 'POST',data});
}

3、使用

4、最终效果

5、注意

为什么返回的不应该是以下这种格式吗???

原因:

在request中,有如下代码进行了响应处理,如果你需要可以直接根据需求进行修改resolve

总结:

目前是使用最简易的封装进行实现,如果需要精进可以基于此基础进行添加,如状态管理、拦截器等

http://www.dtcms.com/a/351190.html

相关文章:

  • 企业级集群部署gpmall商城:MyCat+ZooKeeper+Kafka 环境部署与商城应用上线流程
  • VxWorks 核心数据结构详解 【消息队列、环形缓冲区、管道、FIFO、双缓冲区、共享内存】
  • Debian Buster 软件源失效问题
  • 在分布式环境下正确使用MyBatis二级缓存
  • 虚拟滚动优化——js技能提升
  • zookeeper-保姆级配置说明
  • http与https配置
  • 使用分流电阻器时的注意事项--PCB 设计对电阻温度系数的影响
  • Ubuntu 虚拟机配置 Git 并推送到Gitee
  • 低代码如何颠覆企业系统集成传统模式?快来一探究竟!
  • 两数之和,leetCode热题100,C++实现
  • 2025年视觉、先进成像和计算机技术论坛(VAICT 2025)
  • LeetCode热题100--108. 将有序数组转换为二叉搜索树--简单
  • 【Lua】题目小练11
  • Ansible 自动化运维工具:介绍与完整部署(RHEL 9)
  • 【软考论文】论领域驱动开发方法(DDD)的应用
  • CentOS 7服务器初始化全攻略:从基础配置到安全加固
  • AI应用--接口测试篇
  • Maya绑定基础:驱动关键帧的使用
  • C# .NET支持多线程并发的压缩组件
  • 视频创作者如何用高级数据分析功能精准优化视频策略
  • 红色文化与前沿科技的融合:VR呈现飞夺泸定桥的震撼历史场景​
  • LWIP协议栈
  • Java项目-苍穹外卖_Day3-Day4
  • MyBatis-Flex:一个支持关联查询的MyBatis
  • android vehicle
  • SOME/IP-SD协议含配置选项键值信息的报文示例解析
  • 贝叶斯优化提升化学合成反应效率(附源码)
  • 如何将数据从vivo手机传输到另一部vivo手机
  • 《高并发场景下数据一致性隐疾的实战复盘》