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

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.xdnf.cn/news/18738.html

相关文章:

  • 解决VSCode无法下载服务器端 Server问的题
  • vue3 + jsx 中使用native ui 组件插槽
  • 使用 mcp-use 构建极简 Web 自动化测试智能体「喂饭教程」
  • http与https配置
  • 管理网络安全
  • FreeRTOS学习笔记(四):任务执行与切换
  • 入门Ubuntu操作系统
  • 类型签名,位置参数,关键字参数
  • 【Jetson】基于llama.cpp部署gpt-oss-20b(推理与GUI交互)
  • 利用Certbot生成ssl证书配置到nginx
  • Redis--2
  • 从下载到运行:MySQL 详细安装配置完整教程
  • Cloudflare 推出 GenAI 安全工具,守护企业数据
  • AI在提升阅读效率的同时,如何加强理解深度?
  • 2025中国生物制造科技创新论坛为何“花落”常德?
  • arm问题
  • 编写Linux下usb设备驱动方法:probe函数中要进行的工作
  • HTML+CSS+JavaScript实现的AES加密工具网页应用,包含完整的UI界面和加密/解密功能
  • 集成电路学习:什么是ONNX开放神经网络交换
  • 网络编程——TCP、UDP
  • ADC-工业信号采集卡-K004规格书
  • JWT用户认证后微服务间如何认证?(双向TLS(mTLS)、API网关、Refresh Token刷新Token)微服务间不传递用户认证Token
  • zookeeper基础概念及部署
  • Redis缓存雪崩缓存击穿缓存穿透的处理方式
  • java18学习笔记
  • Nuxt.js@4 中管理 HTML <head> 标签
  • AI 伦理的 “灰色地带”:数据隐私与技术创新如何平衡?
  • 零知开源——基于STM32F103RBT6和ADXL335实现SG90舵机姿态控制系统
  • Coze用户账号设置修改用户头像-前端源码
  • 深度学习之第三课PyTorch( MNIST 手写数字识别神经网络模型)