微信小程序|小程序开发
小程序,简单,请求
微信小程序-小程序开发微信小程序之网络请求简单封装实例详解
dnf 自动任务源码,ubuntu下 zfs,tomcat的官方镜像网站,反爬虫 500,php怎么实现可视化编辑,沧州seo推广营销大概多少钱lzw
在微信小程序中实现网络请求相对于Android来说感觉简单很多,我们只需要使用其提供的API就可以解决网络请求问题。
最新锁机源码,vscode格式化文件,ubuntu显示方块,借助tomcat网站发布,c 简单爬虫,php生成excel表格,河南抖音seo招商信息,积分分配网站源码,dede自适应模板lzw
普通HTTPS请求(wx.request)
app 开发 源码,vscode全透明背景图,ubuntu 自动卸载,tomcat下部署war,手机爬虫库,ruby vs php,seo优化收费怎么样分类,免费物流公司网站模板lzw
上传文件(wx.uploadFile)
下载文件(wx.downloadFile)
WebSocket通信(wx.connectSocket)
为了数据安全,微信小程序网络请求只支持https,当然各个参数的含义就不在细说,不熟悉的话可以;可以去阅读官方文档的网络请求api,当我们使用request时header的content-typ默认是application/json,在文档中指出method 的value必须是大写,不过经过测试,小写也能请求成功。request默认的超时时间是60s,如果我们想自定义超时时间,我们可以在app.json中加入下面代码片段,分别设置request,socket,和上传文件及下载文件的超时时间。
"networkTimeout": { "request": 5000, "connectSocket": 5000, "uploadFile": 5000, "downloadFile": 5000 }
设置过超时时间,我们就开始封装网络请求,平时我们所接触的网络请求,一般会分为两类,一类是在后台运行的,没有加载对话框提示,另一种就是有提示,如提示正在加载数据,,那么我们就以此为线索来进行封装。先创建一个network的网络请求工具类,然后
// 展示进度条的网络请求// url:网络请求的url// params:请求参数// message:进度条的提示信息// success:成功的回调函数// fail:失败的回调function requestLoading(url, params, message, success, fail) { console.log(params) wx.showLoading({ title: message, }) wx.request({ url: url, data: params, header: { content-type: application/x-www-form-urlencoded }, method: post, success: function (res) { //console.log(res.data) wx.hideLoading() if (res.statusCode == 200) { success(res.data) } else { fail() } }, fail: function (res) { wx.hideLoading() fail() }, complete: function (res) { }, })}
上面函数很好理解,参数的含义已在代码中解释,在网络请求开始前,先展示Loading对话框,提示用户当前网络正在请求数据,当网络请求成功或者失败后调用wx.hideLoading()取消提示框的展示。在api中还提供了wx.showNavigationBarLoading()用于显示当前页面的导航条加载动画,那么如果我们想展示这个动画可以在requestLoading执行开始调用wx.showNavigationBarLoading(),然后在网络请求成功或者失败后调用wx.hideNavigationBarLoading()隐藏导航栏加载动画。
当网络请求成功并且状态码为200时,将请求到的数据回调通过success(res.data)回调给我们的方法,在上面我们没有对失败原因进行细分,当然你也可以给失败回调加个参数,用于提示用户失败的原因,如res.statusCode ==500时提示服务器内部错误,res.statusCode ==-1时提示请检查网络,res.statusCode ==404,找不到地址等等。
然后我们在创建一个不显示对话框,用户后台请求数据的请求函数,为了少写代码,我们共用上面的函数,如下
//不显示对话框的请求function request(url, params, success, fail) { this.requestLoading(url, params, "", success, fail)}
我们看到我们最终还是调用的requestLoading,那么我们可以在该函数作下判断,如果提示信息message==”就不显示对话框。
最终的代码
function request(url, params, success, fail) { this.requestLoading(url, params, "", success, fail)}// 展示进度条的网络请求// url:网络请求的url// params:请求参数// message:进度条的提示信息// success:成功的回调函数// fail:失败的回调function requestLoading(url, params, message, success, fail) { console.log(params) wx.showNavigationBarLoading() if (message != "") { wx.showLoading({ title: message, }) } wx.request({ url: url, data: params, header: { //Content-Type: application/json content-type: application/x-www-form-urlencoded }, method: post, success: function (res) { //console.log(res.data) wx.hideNavigationBarLoading() if (message != "") { wx.hideLoading() } if (res.statusCode == 200) { success(res.data) } else { fail() } }, fail: function (res) { wx.hideNavigationBarLoading() if (message != "") { wx.hideLoading() } fail() }, complete: function (res) { }, })}module.exports = { request: request, requestLoading: requestLoading}
使用就很简单了,如下
//路径根据自己项目路径修改var network = require("/utils/network.js")getData:function(){ network.requestLoading(URL.MY_SCORE, that.data.params, 正在加载数据, function (res) { //res就是我们请求接口返回的数据 console.log(res) }, function () { wx.showToast({ title: 加载数据失败, }) })}
如果觉得《微信小程序实现网络请求简单封装的代码案例》对你有帮助,请点赞、收藏,并留下你的观点哦!