01 基础request

目录

类 WxRequest 的定义

静态属性 default

构造函数 constructor

方法 request

HTTP 方法封装

创建 WxRequest 实例并导出

完整代码:

WxRequest 的定义

创建一个 WxRequest 类包含一个静态属性 default 和几个方法,用于处理网络请求。

静态属性 default
  • baseURL 是API请求的基础URL,所有通过该类发起的请求都会在这个基础上进行。
  • method 定义了默认的HTTP请求方法,这里设置为 GET
  • header 包含了默认的请求头,这里设置了默认的 Content-Typeapplication/json
  • data 是默认的请求数据,这里设置为 null
  • timeout 定义了请求的超时时间,这里设置为60秒。
构造函数 constructor
constructor(params = {}) {WxRequest.default = { ...WxRequest.default, ...params };
}
  • 构造函数接受一个参数 params,它是一个对象,用于覆盖默认配置。通过展开运算符 ...,我们可以将传入的 params 与默认配置合并,形成最终的配置。
方法 request
request(options) {options.url = WxRequest.default.baseURL + options.url;const finalOptions = { ...WxRequest.default, ...options };return new Promise((resolve, reject) => {wx.request({...finalOptions,success: resolve,fail: reject,})})
}
  • request 方法是核心方法,它接收一个 options 对象,包含了请求的具体信息。
  • 首先将 options.urlbaseURL 拼接,形成完整的请求URL。
  • 然后将默认配置与传入的 options 合并,形成最终的请求配置 finalOptions
  • 使用 wx.request 发起请求,并返回一个 Promise 对象,这样就可以在调用 request 方法的地方使用 .then().catch() 来处理成功和失败的响应。
HTTP 方法封装

为常见的HTTP方法 GET, POST, PUT, DELETE 提供封装:

get(url, data, config) {return this.request(Object.assign({url,method: 'GET',data,}, config))
}
// post, put, delete 方法类似
  • 这些方法内部调用了 request 方法,并提供了默认的 methoddata
  • 使用 Object.assign 将传入的配置与默认配置合并,并传递给 request 方法。

创建 WxRequest 实例并导出

const instance = new WxRequest({baseURL: 'https://gmall-prod.atguigu.cn/mall-api',timeout: 60000
});
export default instance;
  • 创建了一个 WxRequest 的实例 instance,并传入了基础配置,包括 baseURLtimeout
  • 使用 export default 将实例导出,这样在其他文件中可以通过导入 instance 来使用封装好的网络请求方法。
    这个封装允许在小程序的任何地方复用 instance 实例,而不必每次都重新配置基础信息,使得代码更加模块化和可维护。

为了方便统一处理请求参数以及服务器响应结果,我们需要为 WxRequest 添加拦截器功能,拦截器包括 请求拦截器响应拦截器


完整代码:
 

class WxRequest {// 默认配置对象static default = {baseURL: '', // 默认基础URLmethod: 'GET', // 默认请求方法header: {'content-type': 'application/json', // 默认的请求头内容类型},data: null, // 默认请求数据timeout: 60000, // 默认超时时间(毫秒)}/*** 构造函数,用于创建WxRequest实例* @param {Object} params - 构造函数参数,用于覆盖默认配置*/constructor(params = {}) {WxRequest.default = { ...WxRequest.default, ...params };}/*** 发起网络请求的方法* @param {Object} options - 请求选项,包括url、method、header、data等* @returns {Promise} - 返回一个Promise对象,用于处理请求的响应*/request(options) {// 拼接完整的URLoptions.url = WxRequest.default.baseURL + options.url;// 合并默认配置和请求配置const finalOptions = { ...WxRequest.default, ...options };return new Promise((resolve, reject) => {wx.request({...finalOptions,success: resolve, // 直接使用resolve作为成功回调fail: reject, // 直接使用reject作为失败回调})})}// 封装GET实例方法get(url, data, config) {return this.request(Object.assign({url,method: 'GET',data,}, config))}post(url, data, config) {return this.request(Object.assign({url,method: 'POST', // data,}, config))}put(url, data, config) {return this.request(Object.assign({url,method: 'PUT', // data,}, config))}delete(url, data, config) {return this.request(Object.assign({url,method: 'DELETE', // data,}, config))}// 其他方法(post, put, delete)保持不变...
}// 创建WxRequest实例,并传递基础配置
const instance = new WxRequest({baseURL: 'https://gmall-prod.atguigu.cn/mall-api', // 设置基础URLtimeout: 60000 // 设置超时时间
});export default instance;

拦截器的创建请看文章 :

02 创建拦截器-CSDN博客在实例化WxRequest类之后,可以通过修改和方法来配置具体的拦截器逻辑。// 配置请求拦截器// 在发送请求之前做些什么// 响应拦截器// 对响应数据做点什么这样,拦截器就被成功添加到了WxRequest类中,并且可以在请求前和响应后执行自定义逻辑。在请求拦截器中,你可以修改请求配置,例如添加头部信息;在响应拦截器中,你可以根据响应数据进行一些处理,例如提取响应数据中的data属性。请求拦截器:获取 token 并加入请求头;https://blog.csdn.net/everfoot/article/details/142441601

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【后端开发】JavaEE初阶—Theard类及常见方法—线程的操作(超详解)

前言: 🌟🌟本期讲解多线程的知识哟~~~,希望能帮到屏幕前的你。 🌈上期博客在这里:【后端开发】JavaEE初阶—线程的理解和编程实现-CSDN博客 🌈感兴趣的小伙伴看一看小编主页:GGBondl…

计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

鸿蒙OpenHarmony【轻量系统内核扩展组件(CPU占用率)】子系统开发

基本概念 CPU(中央处理器,Central Processing Unit)占用率分为系统CPU占用率和任务CPU占用率。 系统CPU占用率:是指周期时间内系统的CPU占用率,用于表示系统一段时间内的闲忙程度,也表示CPU的负载情况。系…

INIT与init_array

INIT与init array 1.so执行JNI_OnLoad之前,还会执行俩个构造函数init 和init array 在so加载时候有这个过程: .init -> .init array -> JNI_Onload -> java_com_xxx 在脱壳的过程中会在一些系统级的.so中下断点比如:fopen&#x…

GUI编程19:贪吃蛇小游戏及GUI总结

视频链接:21、贪吃蛇之界面绘制_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p21&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.游戏中用的的图片素材 1.贪吃蛇游戏的主启动类StartGame; package com.yundait.snake;import j…

缓存的思考与总结

缓存的思考与总结 什么是缓存缓存命中率数据一致性旁路模式 Cache aside双写模式直写模式 write through异步写 Write Behind 旁路和双写 案例 新技术或中间的引入,一定是解决了亟待解决的问题或是显著提升了系统性能,并且这种改变所带来的增幅&#xff…

【开源服务框架】Dubbo

🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理Java面试中开源服务框架Dubbo会涉及到的知识点 🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一…

GAMES101(15节)

Irradiance辐射度量学 辐射度量学在渲染领域,可以帮助理解基于物理的光照模型 radiant energy辐射能量Q,累计总能量(单位J joule焦耳),就像太阳能板,光照时间越长接收能量越多,收到的能量总和…

jetlinks物联网平台学习2(加盐算法登陆)

加盐算法 加盐算法加密验证密码是否正确 对于传统的MD5加密,比更传统的直接保存账号密码稍微安全一点。 md5加密是一种hash算法 比如对于123456来说,md5算法结果一定是e10adc3949ba59abbe56e057f20f883e 这个结果是固定的。于是有的人准备一张彩虹表 预先…

ECharts基础使用方法 ---vue

1.安装依赖文件 仔细看项目" README.md " 描述,确定用什么安装 npm npm install echarts --save //官网推荐使用 pnpm pnpm install echarts --save 其他也是 在项目根目录,打开当前目录命令控制栏,输入以上命令并运行 安装成功后…

第十三章:使用html和css做一个静态登录网页练习

我们在使用浏览器 浏览某些网站的时候 有可能会遇到登录这种网页,这种网页是怎么制作出来的呢? 下面 我就来分享一个简单的 登录页 实现方案! 登录页面的作用: 身份验证:登录页面的核心作用就是验证用户身份。用户输入用户名(或邮箱、手机号)和密码,系统通过验证来判断…

[数据结构]无头单向非循环链表的实现与应用

文章目录 一、引言二、线性表的基本概念1、线性表是什么2、链表与顺序表的区别3、无头单向非循环链表 三、无头单向非循环链表的实现1、结构体定义2、初始化3、销毁4、显示5、增删查改 四、分析无头单向非循环链表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引…

尚品汇-秒杀商品定时任务存入缓存、Redis发布订阅实现状态位(五十一)

目录: (1)秒杀业务分析 (2)搭建秒杀模块 (3)秒杀商品导入缓存 (4)redis发布与订阅实现 (1)秒杀业务分析 需求分析 所谓“秒杀”&#xff0…

百度智能云API调用

植物识别API import base64 import urllib import requestsAPI_KEY = "你的图像识别API_KEY" SECRET_KEY = "你的图像识别SECRET_KEY"def main():url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/plant?access_token=" + get_acc…

12、等保安全通用要求

数据来源:12.等保安全通用要求_哔哩哔哩_bilibili 基本要求

docker启动mysql未读取my.cnf配置文件问题

描述 在做mysql主从复制配置两台mysql时,从节点的my.cnf配置为: [mysqld] datadir /usr/local/mysql/slave1/data character-set-server utf8 lower-case-table-names 1 # 主从复制-从机配置# 从服务器唯一 ID server-id 2 # 启用中继日志 relay-l…

thop计算模型复杂度(params,flops)

thop安装 -pip install thop在线安装失败 -离线安装 github网址: pytorch-OpCounter:Count the MACs / FLOPs of your PyTorch model. - GitCode python setup.py install 测试: from options import config as c import os os.environ["CUD…

【高分系列卫星简介——高分三号卫星(GF-3)】

高分三号卫星(GF-3) 高分三号(GF-3)是我国首颗高分辨率、C频段、多极化合成孔径雷达(SAR)卫星,由中国空间技术研究院北京空间飞行器总部设计部研制,并于2016年8月10日成功发射。该卫…

vue实现扫雷代码复制即可用,vue2和vue3都可适用

效果预览 代码实现 <template><div id"app"><div class"mine-sweeper"><div class"board" v-for"row in board" :key"row-${row.index}"><divclass"cell":class"{ no-clickable…