[小程序开发] 设置request封装请求参数

一、在类中定义实例属性,用来设置默认请求参数

defaults={baseURL:'',//请求基准地址url:'',//接口的请求路径data:null,//请求参数method:'GET',//默认的请求方法//请求头header:{'Content-type':'application/json'//设置数据的交互格式},timeout:60000//默认的超时时长,小程序默认的超时时长是1分钟}

二、 在实例化时传入的参数,会被constructor形参进行接收

constructor(params={}){// 通过Object.assign方法合并请求参数// 注意:需要传入的参数,覆盖默认的参数,因此传入的参数需要放到最后this.defaults = Object.assign({},this.defaults,params)}

 三、在 request实例方法中合并参数

        // 需要先合并完整的请求地址(baseURL+url)options.url = this.defaults.baseURL + options.url// 合并请求参数options={...this.defaults,...options}

四、在实例化时传递参数

const instance = new WxResquest({baseURL:'https://blog.csdn.net',timeout:15000
})

五、完整代码

        1、封装代码

// 创建WxResquest类
// 通过类的方式来进行封装,会让代码更具有复用性,也可以方便添加新的属性和方法
class WxResquest{// 定义实例属性,用来设置默认请求参数defaults={baseURL:'',//请求基准地址url:'',//接口的请求路径data:null,//请求参数method:'GET',//默认的请求方法//请求头header:{'Content-type':'application/json'//设置数据的交互格式},timeout:60000//默认的超时时长,小程序默认的超时时长是1分钟}// 用于创建和初始化类的属性以及方法// 在实例化时传入的参数,会被constructor形参进行接收constructor(params={}){// 通过Object.assign方法合并请求参数// 注意:需要传入的参数,覆盖默认的参数,因此传入的参数需要放到最后this.defaults = Object.assign({},this.defaults,params)}// request实例方法接收一个对象类型的参数,属性值和wx.request方法调用时传递的参数保持一致request(options){// 需要先合并完整的请求地址(baseURL+url)options.url = this.defaults.baseURL + options.url// 合并请求参数options={...this.defaults,...options}// 需要使用Promise封装wx.request,处理异步请求return new Promise((resolve,reject)=>{wx.request({...options,//   当接口调用成功时会触发success回调函数success:(res)=>{resolve(res)},//   当接口调用失败时会触发fail回调函数fail:(err)=>{reject(err)}})})}
}// 以下是实例化代码
// 目前写到一个文件中,是为了方便进行测试,以后会提取成多个文件// 对WxResquest进行实例化
const instance = new WxResquest({baseURL:'https://blog.csdn.net',timeout:15000
})// 将WxResquest实例进行暴露出去,方便再其他文件中进行使用
export default instance

        2、调用代码

// pages/test/test.js
import instance from '../../utils/request'
Page({async handler(){const res = await instance.request({url:"/Hang_Q?spm=1000.2115.3001.5343",method:'GET'})console.log(res)}
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wpf ContentPresenter

在WPF(Windows Presentation Foundation)中,ContentPresenter是一个关键组件,它负责在控件或模板中渲染和展示内容。以下是关于ContentPresenter在WPF中作用、特性和使用场景的详细说明: 目的 内容占位符&#xff1a…

MTMT 质押活动启动 ,坐享巨大BTCFi 市场红利

BTC是第一大加密货币,目前加密货币总市值为 2.6 万亿美元,BTC市值占比约为 51%。事实上,相对于开发程度更高的以太坊生态,BTC生态目前仍处于发展的极早期,这意味着仍旧巨大的BTC价值亟需释放,这也意味着 BT…

设计方案-定时任务接口数据存储及更新策略

前言 在没有使用ETL工具且不考虑多数据源的情况下,我们需要从别的系统获取数据时,一般会选择分页接口查询并存储。本文算是我对类似场景代码的提炼,旨在总结相关套路,提升自我对数据库和模块的设计能力。 ETL(英文 Extract-Trans…

代码随想录 Day23 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇

669. 修剪二叉搜索树 class Solution { public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root nullptr ) return nullptr;if (root->val < low) {TreeNode* right trimBST(root->right, low, high); // 寻找符合区间[low, high]的节点return ri…

li标签间的空白问题解决

li 与 li 之间有看不见的空白间隔是什么原因引起的&#xff1f; 浏览器会把inline内联元素间的空白字符&#xff08;空格、换行、Tab等&#xff09;渲染成一个空格。为了美观&#xff0c;通常是一个<li>放在一行&#xff0c;这导致<li>换行后产生换行字符&#xf…

详解CAS(Compare and swap)

一、什么是 CAS CAS: 全称Compare and swap&#xff0c;字⾯意思:”⽐较并交换“&#xff0c;⼀个 CAS 涉及到以下操作&#xff1a; 我们假设内存中的原数据V&#xff0c;旧的预期值A&#xff0c;需要修改的新值B。 比较 A 与 V 是否相等。&#xff08;⽐较&#xff09; 如果…

日志集中审计系列(3)--- LogAuditor接收UMA设备syslog日志

日志集中审计系列(3)--- LogAuditor接收UMA设备日志 前言拓扑图设备选型组网需求配置思路操作步骤结果验证前言 近期有读者留言:“因华为数通模拟器仅能支持USG6000V的防火墙,无法支持别的安全产品,导致很多网络安全的方案和产品功能无法模拟练习,是否有真机操作的实验或…

PyCharm中出现Microsoft Defender配置建议

原因 Windows安全中心的病毒和威胁防护会自动扫描电脑中的文件夹&#xff0c;我们的项目文件夹和IDE文件夹也会被扫描&#xff0c;而PyCharm认为这会降低IDE性能。 解决方法 直接点击提示框里的自动。 或是手动给扫描添加排除项&#xff0c;步骤如下&#xff1a; 1、先打开…

k8s1.28.8版本配置Alertmanager报警方式(邮件,企业微信)

文章目录 总结部署流程 Alertmanager 三大核心1. 分组告警2. 告警抑制3. 告警静默 报警过滤静默通知方案一&#xff1a;方案二&#xff1a; 抑制报警规则案例一 参考文档 自定义路由告警&#xff0c;分来自不同路由的告警&#xff0c;艾特不同的人员进行区分修改 alertmanager …

预训练大模型最佳Llama开源社区中文版Llama2

Llama中文社区率先完成了国内首个真正意义上的中文版Llama2-13B大模型&#xff0c;从模型底层实现了Llama2中文能力的大幅优化和提升。毋庸置疑&#xff0c;中文版Llama2一经发布将开启国内大模型新时代。 作为AI领域最强大的开源大模型&#xff0c;Llama2基于2万亿token数据预…

【C++入门】输入输出、命名空间、缺省参数、函数重载、引用、内联函数、auto、基于范围的for循环

目录 命名空间 命名空间的定义 命名空间的使用 输入输出 缺省参数 函数重载 引用 常引用 引用的使用场景 内联函数 auto 基于范围的for循环 命名空间 请看一段C语言的代码&#xff1a; #include <stdio.h> #include <stdlib.h>int rand 10;int main…

java打家劫舍 1 (力扣Leetcode 198)

打家劫舍 1 力扣原题链接 问题描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报…

修改aws账户的密码和MFA

要使用AWS CLI删除当前账户的多因素认证(MFA)设备并修改密码&#xff0c;你需要先确保已安装并配置了AWS CLI&#xff0c;并且你的账户有足够的权限执行这些操作。下面是如何分步进行的指导&#xff1a; 1. 删除MFA设备 首先&#xff0c;你需要找出MFA设备的序列号或ARN。可以…

《堕落的审判》吵架台词

一个人没有做某件事的原因就是这个人没有做这件事&#xff0c;与其他任何原因没有关系。所有的原因都是找理由&#xff0c;都是替罪的羔羊&#xff0c;都是自我麻醉的毒药&#xff0c;都是在饮鸩止渴。 愤怒的本质就是对自我无能的控诉。 (Sandra)-What do you expect me to do…

图论-最短路

一、不存在负权边-dijkstra算法 dijkstra算法适用于这样一类问题&#xff1a; 从起点 start 到所有其他节点的最短路径。 其实求解最短路径最暴力的方法就是使用bfs广搜一下&#xff0c;但是要一次求得所有点的最短距离我们不可能循环n次&#xff0c;这样复杂度太高&#xf…

Docker + Nginx 安装

安装Docker 1.防火墙 2.yum源 3.安装基础软件 更新yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all #清除yum源缓存 yu…

【JavaScript编程】forEach跳出循环

在JavaScript中&#xff0c;forEach函数用于遍历数组中的每一个元素&#xff0c;并对每个元素执行一次回调函数。然而&#xff0c;forEach函数并没有内置的方法可以直接跳出整个循环&#xff0c;因为它设计之初就是为了确保每个元素都会被处理。但是&#xff0c;你可以通过一些…

每天学习python30分钟(第二天)

1.字典&#xff1a; 相当与数据结构 定义与访问 tinydict {Name: Zara, Age: 7, Class: First}print("tinydict[Name]: ", tinydict[Name]) print("tinydict[Age]: ", tinydict[Age]) tinydict[Name]: Zara tinydict[Age]: 7 也可以 tinydict1 { …

推挽输出与开漏输出

推挽输出与开漏输出 文章目录 推挽输出与开漏输出前言一、推挽输出二、开漏输出总结 前言 在使用GPIO口时&#xff0c;会遇到两种配置&#xff0c;一种叫推挽输出&#xff0c;一种叫开漏输出&#xff0c;今天就简聊一聊这两种模式的差异和选择。 一、推挽输出 如图所示&#…

力扣 1035. 不相交的线

题目来源&#xff1a;https://leetcode.cn/problems/uncrossed-lines/description/ C题解&#xff1a;经过细细一推导&#xff0c;就发现跟力扣 1143. 最长公共子序列-CSDN博客 换汤不换药。 直线不能相交&#xff0c;说明元素顺序不能改变&#xff0c;求可以绘制的最大连线数…