温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信小程序中网络请求封装的示例分析

发布时间:2021-06-10 11:59:51 来源:亿速云 阅读:214 作者:小新 栏目:移动开发

这篇文章主要介绍微信小程序中网络请求封装的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

微信小程序之网络请求简单封装实例详解

在微信小程序中实现网络请求相对于Android来说感觉简单很多,我们只需要使用其提供的API就可以解决网络请求问题。

  • 普通HTTPS请求(wx.request)

  • 上传文件(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: '加载数据失败',    })   }) }

以上是“微信小程序中网络请求封装的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI