目录
为什么需要封装 wx.request
1. 避免回调地狱
2. 统一管理
3. 扩展功能
小程序异步 API 的改进
封装实现方式
在小程序开发中,网络请求是不可或缺的功能之一。小程序提供了 wx.request
API 来实现网络请求,但直接使用这个 API 在复杂场景下可能会遇到一些问题,比如回调地狱。本文将介绍为什么要封装 wx.request
,并提供一种封装的实现方式。
为什么需要封装 wx.request
1. 避免回调地狱
小程序的 wx.request
是基于回调函数的异步 API。当需要连续进行多个网络请求时,代码可能会出现多层回调嵌套,形成所谓的“回调地狱”。这种代码不仅难以阅读和维护,还容易出错。
2. 统一管理
直接使用 wx.request
在多个页面或组件中会重复编写相同的代码,不利于代码的复用和管理。通过封装,我们可以统一处理请求的配置、拦截器、错误处理等。
3. 扩展功能
封装 wx.request
可以让我们添加额外的功能,如请求拦截器、响应拦截器、超时重试、加载动画等。
小程序异步 API 的改进
从基础库版本 2.10.2 开始,小程序的异步 API 支持了 callback & promise 两种调用方式。但部分 API 如 downloadFile
, request
, uploadFile
等,仍然需要开发者自行封装以支持 promise 调用方式。
封装实现方式
我们可以参考流行的网络请求库 Axios 的使用方式来封装 wx.request
。
封装后我们的网络请求模块包含以下功能:
- 包含 request 实例方法发送请求
- 包含 get、delete、put、post 等实例方法可以快捷的发送网络请求
- 包含 请求拦截器、响应拦截器
- 包含 uploadFile 将本地资源上传到服务器 API
- 包含 all 并发请求方法
- 同时优化了并发请求时 loading 显示效果
系列讲解,请看后续文章:
01 基础request-CSDN博客你的WxRequest类包含了一个静态属性default和几个方法,用于处理网络请求。https://blog.csdn.net/everfoot/article/details/142441403
02 创建拦截器-CSDN博客在实例化WxRequest类之后,可以通过修改和方法来配置具体的拦截器逻辑。// 配置请求拦截器// 在发送请求之前做些什么// 响应拦截器// 对响应数据做点什么这样,拦截器就被成功添加到了WxRequest类中,并且可以在请求前和响应后执行自定义逻辑。在请求拦截器中,你可以修改请求配置,例如添加头部信息;在响应拦截器中,你可以根据响应数据进行一些处理,例如提取响应数据中的data属性。请求拦截器:获取 token 并加入请求头;https://blog.csdn.net/everfoot/article/details/142441601...持续更新中