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

uniapp进阶技巧:如何优雅地封装request实例

在uniapp开发过程中,合理封装网络请求是提高代码质量和开发效率的关键。本文将介绍一种更为优雅的封装方式,通过创建一个request实例来管理不同类型的HTTP请求。

一、准备工作

在开始封装之前,请确保你的项目中已经安装了uniapp开发环境,并且具备以下基础知识:

  1. 熟悉JavaScript基本语法
  2. 了解uniapp的基本用法
  3. 理解Promise的使用

 

二、封装request实例

1、创建一个request.js文件

在项目的common目录下(如果没有,请自行创建),新建一个request.js文件。

2、初始化instance对象和methods数组

在request.js文件中,我们首先定义一个instance对象和一个包含所有HTTP方法的methods数组:

const instance = {};
const methods = ['OPTIONS', 'GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'TRACE', 'CONNECT']; // 请求方法数组

3、 循环methods数组,为每种HTTP方法创建一个函数

接下来,我们遍历methods数组,为每种HTTP方法创建一个对应的函数,并将其挂载到instance对象上:

methods.forEach(item => {
  instance[item.toLocaleLowerCase()] = (url, data = {}, config = {}) => {
    return new Promise((resolve, reject) => {
      // 开始封装uniapp的request方法
      uni.request({
        url: config.baseUrl ? config.baseUrl + url : url,
        method: item,
        data: data,
        header: config.header || {
          'content-type': 'application/json'
        },
        timeout: config.timeout || 60000, // 默认超时时间60秒
        success: (res) => {
          if (res.statusCode === 200) {
            resolve(res.data);
          } else {
            reject(res);
          }
        },
        fail: (err) => {
          reject(err);
        }
      });
    });
  };
});

4、添加默认配置

我们可以为instance对象添加一个setDefaultConfig方法,用于设置默认配置:

instance.setDefaultConfig = (config) => {
  instance.defaultConfig = config;
};

// 默认配置示例
instance.setDefaultConfig({
  baseUrl: 'https://api.example.com',
  timeout: 60000,
  header: {
    'Authorization': 'Bearer your-token'
  }
});

5、导出instance对象

最后,我们将instance对象导出,以便在其他文件中使用:

export default instance;

三、使用封装后的request实例

1、引入request实例

在需要使用网络请求的页面或组件中,引入request.js文件:

import request from '@/common/request.js';

2、发起请求

以下是一个示例,展示如何使用封装后的request实例发起GET请求:

request.get('/user/info', { userId: 123 }, request.defaultConfig).then((res) => {
  console.log(res);
}).catch((err) => {
  console.error(err);
});

四、总结

通过以上步骤,我们成功地在uniapp中封装了一个request实例,它支持所有常见的HTTP方法,并且可以通过setDefaultConfig方法设置全局默认配置。这种封装方式不仅使代码更加整洁,还提高了网络请求的管理效率。希望本文能帮助你在uniapp项目中更好地处理网络请求。

 


http://www.kler.cn/a/420672.html

相关文章:

  • 新手学习:网页前端、后端、服务器Tomcat和数据库的基本介绍
  • 二百七十八、ClickHouse——将本月第一天所在的那一周视为第一周,无论它是从周几开始的,查询某个日期是本月第几周
  • 去哪儿Java开发面试题及参考答案
  • 【C++】STL——map和set
  • ESP32开发板在micropython里直接用requests向web服务器发送请求:ESP32S3开发板通过fastapi中转成功连接星河大模型
  • Z2400032基于Java+Mysql+SSM的校园在线点餐系统的设计与实现 代码 论文
  • 《嵌入式硬件设计》
  • 架构学习第五周--Kubernetes(一)
  • python基础(六)
  • 依赖注入之登录验证(Java EE 学习笔记08)
  • [JuMP.jl] 线性规划
  • 107.【C语言】数据结构之二叉树求总节点和第K层节点的个数
  • 针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇
  • 人证合一开启安全认证新时代、C#人证合一接口集成、人脸识别
  • 第一部分:基础知识 3. 数据类型 --[MySQL轻松入门教程]
  • 实战优化公司线上系统JVM:从基础到高级
  • 《Vue零基础入门教程》第十三课:条件渲染
  • PowerShell:查找并关闭打开的文件
  • Modern Effective C++ 条款二十三:理解std::move和std::forward
  • java 网络编程 详解
  • 数据结构判断两棵树是否相等
  • 九,[极客大挑战 2019]LoveSQL1
  • JavaWeb—— 构建互联网世界的 “魔法砖石” 与实战密码
  • 企业品牌曝光的新策略:短视频矩阵系统
  • 多模态抑郁估计论文研读|Multi-modal Depression Estimation Based on Sub-attentional Fusion
  • 【QNX+Android虚拟化方案】123 - 如何配置qnx侧GPIO_IRQ中断和PMIC_GPIO_IRQ中断