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

2025 uniapp的请求封装工具类以及使用【拿来就用】

一、创建一个http请求封装的js文件,名字自定义:my_http.js

/*** 基础API请求地址(常量,全大写命名规范)* @type {string}* @constant*/
let BASE_URL = ''//通过环境来判断基础路径
if (process.env.NODE_ENV === 'development') {BASE_URL="本地/局域网后端接口"
} else {BASE_URL='网上(服务器)接口'
}/*** 封装的HTTP请求核心函数* @param {string} url - 请求的接口路径(不需要包含基础接口URL)* @param {Object} [data={}] - 请求参数,默认为空对象* @param {string} [method='GET'] - HTTP方法,默认GET,支持GET/POST/DELETE/PUT等* @returns {Promise} - 返回Promise便于链式调用* */
export default function http(url, data = {}, method = 'GET') {// 返回一个Promise对象,支持外部链式调用return new Promise((resolve, reject) => {// 调用uni-app的底层请求APIuni.request({// 拼接完整请求地址(基础接口URL +  请求的接口路径)url: BASE_URL + url,// 请求参数(GET请求时会自动转为query string)data: data,// 请求方法(转换为大写保证兼容性)method: method.toUpperCase(),// 请求头配置header: {// 从本地存储获取token,没有就位空'token': uni.getStorageSync('token') || '',// 默认JSON格式'Content-Type': 'application/json'},// 请求成功回调(注意:只要收到服务器响应就会触发,无论HTTP状态码)success: (res) => {/* HTTP层状态码处理(4xx/5xx等也会进入success回调) */if (res.statusCode !== 200) {const errMsg = `[${res.statusCode}]${res.errMsg || '请求失败'}`showErrorToast(errMsg)// 使用Error对象传递更多错误信息reject(errMsg)}/* 业务层状态码处理(假设1表示成功) */if (res.data.code === 1) {// 提取业务数据(约定data字段为有效载荷)resolve(res.data.data)} else {// 业务错误处理const errMsg = res.data.msg || `业务错误[${res.data.code}]`showErrorToast(errMsg)reject(res.data.msg)}},// 请求失败回调(网络错误、超时等)fail: (err) => {const errMsg = `网络连接失败: ${err.errMsg || '未知错误'}`showErrorToast(errMsg)reject(new Error(errMsg))},})})
}/*** 显示统一格式的错误提示(私有工具方法)* @param {string} message - 需要显示的错误信息* @private*/
function showErrorToast(message) {uni.showToast({title: message, // 提示内容icon: 'none', // 不显示图标duration: 3000 // 3秒后自动关闭})
}

二、在创建一个调用具体http请求接口的js文件,名字自定义:my_api.js

// 引入公共的请求封装my_http.js(根据你自己实际的路径引入)
import http from './my_http.js'// 获取bannner列表【无参数】
export const getBannerList = () => {return http('/banner/list')
}// 登录【url接口链接 ? 参数1=参数值1 & 参数2=参数值2】
export const login = (uname, upwd) => {return http('/login', {uname: uname,upwd: upwd})
}

三、调用http请求接口获取数据

<script setup>//引入系统要用到的方法import {ref,reactive} from 'vue'import { onLoad } from '@dcloudio/uni-app'// 1、引入定义的接口方法(根据自己的实际路径获取)import { getTypeList } from '../../api/my_api'//2、定义轮播图列表const bannerList = ref([])// 生命周期,进来就加载onLoad(() => {//3、调用定义的方法接口,获取banner结果列表getBannerList().then(res => {//4、将获取的值赋值给轮播图数组变量bannerList.value = res})})</script>

相关文章:

  • 基于大模型的TIA诊疗全流程智能决策系统技术方案
  • 【三维重建】三维场景生成:综述
  • Cesium.Ray 知识详解,示例代码
  • Jmeter 安装包与界面汉化
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-C. 常用SQL脚本模板
  • 高压启动电路--学习记录
  • 蓝桥杯13届国B 完全日期
  • 正则表达式(二)-高级应用_谨慎使用
  • 《AI驱动的智能推荐系统:原理、应用与未来》
  • 微信小程序之将轮播图设计为组件
  • 鸿蒙NEXT开发动画案例8
  • wordcount程序
  • Git 用户名与邮箱配置全解析:精准配置——基于场景的参数选择
  • 第二章:磁盘管理与文件管理
  • 六西格玛觉醒:一场数据思维的启蒙运动​
  • 【RabbitMQ】发布确认机制的具体实现
  • MUSE Pi Pro 更换kernel内核及module模块
  • AI智能体的现状和应用前景
  • jQuery知识框架
  • 2020年下半年试题三:论云原生架构及其应用
  • 宜昌谱写新叙事:长江大保护与高质量发展如何相互成就
  • 光明日报:家长孩子共同“息屏”,也要保证高质量陪伴
  • 来沪一个月几乎未花住宿钱,女子虚构卫生问题屡薅酒店羊毛被刑拘
  • 赖清德为“临阵脱逃”作准备,国台办:绝不会任“台独”祸首逍遥法外
  • 国务院办公厅印发《国务院2025年度立法工作计划》
  • 京东美团饿了么等外卖平台被约谈