微信小程序-封装请求API——原生方式

前言

在微信小程序中封装请求API是一个常见的做法,这有助于减少代码冗余并提高代码的可维护性。以下是一个简单的封装示例:

  1. 创建封装函数

    您可以在小程序的某个文件中创建一个名为request的函数,该函数接受一个url和一个data对象作为参数,并返回一个Promise

  2. 发起网络请求

    使用wx.request方法发起网络请求,并在成功和失败时分别调用resolvereject方法。

  3. 处理响应数据

    根据需要对响应数据进行处理,例如,您可以将JSON格式的数据转换为JavaScript对象。

  4. 错误处理

    您还应该在请求失败时进行适当的错误处理,例如,显示一个错误消息或执行其他错误恢复操作。

以下是一个基本的请求封装示例:

function request(url, data = {}, method = 'GET') {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: data,
      method: method,
      header: {
        'content-type': 'application/json' // 默认值
      },
      success(res) {
        resolve(res.data);
      },
      fail(err) {
        reject(err);
      }
    });
  });
}

在这个例子中,request函数接受三个参数:url(请求的URL),data(发送的数据,默认为空对象),和method(请求方法,默认为'GET')。函数内部使用wx.request发起请求,并在请求成功时解析响应数据,在请求失败时抛出错误。

要使用这个封装的请求函数,您可以像下面这样调用它:

request('https://api.example.com/data', { key: 'value' })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

这只是一个基本示例,您可能需要根据您的具体需求对其进行修改和扩展。例如,您可能希望添加对不同HTTP方法的支持,或者添加自定义的错误处理逻辑。

比如你还可以像下面这样继续扩展封装:

 参照原生的微信小程序的请求格式,封装增加一些简单的功能,如果需要按照promise的方式来封装,请参考:

微信小程序-封装请求API——promise方式_五速无头怪的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/black_cat7/article/details/120451986

export const cjRequest = (parmas) => {
    let url = parmas.url, //请求url
        data = parmas.data || undefined, //请求参数
        success = parmas.success || function () { }, //成功后的回调函数
        fail = parmas.fail || function () { }, //成功后的回调函数
        complete = parmas.complete || function () { }, //完成后的回调函数
        method = parmas.method || 'GET', //请求方式
        header = parmas.header || 'application/json', //请求头
        getUserInfo = parmas.getUserInfo || 0 //是否获取用户数据 1表示没授权过,需要去授权

    //判断是否要求获取用户数据并且判断是否已经存储过用户信息
    //如果getUserInfo=1并且没有存储过用户信息 则跳转到授权页面
    if (getUserInfo && !wx.getStorageInfoSync('userInfo')) {
        console.log('未授权,跳转授权页面');
        wx.navigateTo({
            url: '/pages/user/getUserInfo'//跳转到授权页面
        })

    }
    //请求数据
    wx.request({
        url,
        method,
        data,
        header,
        success,
        fail,
        complete
    })


    /**
     *! 要用的页面中的 调用方法
        //引入封装的请求api
        import request from "../../utils/request.js"//引入request

        onLoad: function() {
            //使用封装的api,传入参数
            cjRequest({
                method:'get',
                url: 'https://www.baidu.com',
                data:{},
                header:{},
                getUserInfo: 1, //需要授权
                success(res) {
                    console.log(res);
                    ....
                },
                fail(err) {
                    console.log(err);
                    ....
                },
                complete(res) {
                    console.log(res);
                    ....
                }
            })
        }
     * 
     */
}

参考格式:colorUI的社区讨论

小程序如何实现AOP · 语雀 (yuque.com)icon-default.png?t=N7T8https://www.yuque.com/colorui/colorui/me28gb


 博主 [DTcode7] 带您 溺亖在知识的海洋里,嘿嘿嘿.~
🐒 个人主页—— DTcode7 的博客🐒

《微信小程序相关博客》
《Vue相关博客》
《前端开发习惯与小技巧相关博客》
《AIGC相关博客》

《photoshop相关博客》
😚 吾辈才疏学浅,摹写之作,恐有瑕疵。望诸君海涵赐教。望轻喷,嘤嘤嘤 🙈
🕍 愿斯文对汝有所裨益,纵其简陋未及渊博,亦足以略尽绵薄之力。倘若尚存阙漏,敬请不吝斧正,俾便精进!

 

### 微信小程序前端架构设计 微信小程序的前端架构设计围绕着双线程模型展开,这种设计显著提升了性能和用户体验。其核心组成部分包括 WXML、WXSS、JS 以及小程序框架提供的 API。 #### 1. 双线程架构概述 微信小程序采用双线程架构,分为渲染层和逻辑层两个独立的执行环境[^2]。 - **渲染层**:负责页面的渲染工作,主要包括解析 WXML 和 WXSS 文件,完成样式计算、布局排版以及最终的视图绘制。这一部分运行在一个 WebView 中,专注于 UI 的呈现效果。 - **逻辑层**:承担业务逻辑处理的任务,例如事件响应、数据请求、状态管理等。它通过 JavaScript 实现,并利用小程序框架提供的 API 完成与服务器的数据交互和其他功能扩展。 两者的通信依赖于微信客户端内置的桥接机制(WxJsBridge),从而实现高效的数据同步和事件触发。 --- #### 2. 前端核心技术栈 以下是构成微信小程序前端的核心技术: ##### (1) **WXML** WXML 是一种声明式的标记语言,类似于 HTML,专门用于描述小程序的结构化内容。它的作用在于定义页面上的组件及其嵌套关系。例如: ```html <view class="container"> <text>这是一个简单的文本</text> </view> ``` ##### (2) **WXSS** WXSS 提供了一种 CSS 风格的语言来设置小程序中的样式规则。支持基础的选择器语法、尺寸单位 rpx 自适应屏幕宽度等功能。示例代码如下: ```css .container { display: flex; justify-content: center; align-items: center; } .text { font-size: 30rpx; /* 使用相对像素 */ color: #333; } ``` ##### (3) **JavaScript** 作为连接逻辑层的主要编程语言,JavaScript 不仅实现了动态行为控制,还借助小程序框架封装的一系列方法完成了诸如网络请求、本地缓存访问等工作。下面是一个发起 GET 请求的例子: ```javascript wx.request({ url: 'https://example.com/data', method: 'GET', success(res) { console.log('成功获取数据:', res.data); }, fail(err) { console.error('请求失败:', err); } }); ``` ##### (4) **API 支持** 小程序框架提供了丰富的原生接口集合,覆盖了从设备信息读取到多媒体播放等多个领域。这些工具极大地降低了开发复杂度并增强了应用的功能性[^1]。 --- #### 3. 数据绑定与事件驱动 为了简化状态管理和提升可维护性,微信小程序引入了双向数据绑定的概念。当用户输入或者点击按钮时会自动更新关联变量;反之亦然——任何改变都会即时反映至界面上。此外,所有的用户动作均需经过特定形式注册才能生效,比如监听滚动条变化或表单提交等操作。 --- #### 4. 配置文件的重要性 除了上述提到的技术要点之外,合理运用配置文件也是优化项目流程的关键环节之一。全局 app.json 或者局部 page.json 文件能够预先设定导航栏文字颜色、底部标签页图标等内容,有助于保持整体视觉一致性的同时减少重复劳动量[^3]。 --- ### 总结 综上所述,微信小程序的前端架构融合了现代化 Web 技术理念,在保障高性能表现的前提下兼顾易用性和灵活性特点。无论是初学者还是资深工程师都能从中受益匪浅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DTcode7

客官,赏个铜板吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值