前言
之前写小程序,每次请求后台时都直接调用原生的API,
wx.request
,每次都要写url,data,回调函数等,正好前段时间,小程序项目需要添加新内容,趁此机会,做一个封装的请求工具,比较简单。
本文若有出入,请指正——来自小渣渣的颤抖
原生的API
首先看看原生的api,wx.request
需要写如下东西:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15wx.request({
url: '', // url地址
// 参数
data:{
},
method:'', // post || get
success: res=> {
// 请求成功回调函数,res为回调参数
},
fail:res=> {
// 请求失败回调函数,res为回调参数
}
})
每次网络请求都需要写这些内容,其实在实际项目中,大多情况下url都是由基地址+请求模块构成,比如https://woshigecainiao.com/myservice/login, 这里基地址为:https://woshigecainiao.com/myservice/, 模块为/login。基地址一般都不会变,method通常也是约定好的,一律post或者get等,fail回调一般都会统一处理,所以不同的是参数data,和请求成功后的处理。
实现
在util目录下新建NetAPI.js
1 | const config = require ("../config.js") // 域名配置等 |
这里我导入了config.js文件,其中配置了后台服务器的ip和后台请求基地址和请求模块地址等,这样便于统一管理,只需要在config中配置,NetAPI中调用即可,NetAPI中不关心具体的url。1
const request = (url, data, showLoading) => {...}
- url:后台不同模块的入口,比如login等这样的模块
- data:请求所需要的参数data
- showLoading:发起网络请求是否需要显示加载对话框的控制开关
以我这里的例子为例,我最后暴露除了VehicleResManager
,即车辆预约管理模块,所对应了后台模块地址卸载config中config.CLYYQuery
,这样,在page的js中只需要简单的调用暴露的相关入口即可。调用
在某个page中首先导入该工具1
const NetAPI = require('../../utils/NetAPI.js')
调用处:1
NetAPI.VehicleResManager(data, that.data.curPage == 0).then(res => {...}
res即为请求返回数据,不包含网络状态等,因为在工具中resolve(res.data)
中直接返回的是返回体的data部分。
这里关于Promise就不说了
最后
此致,敬礼