微信小程序网络封装(简单高效)


Posted in Javascript onAugust 06, 2018

废话引言

小程序虽然出世很久了,但一直没怎么接触到小程序开发。吉他兴趣班老师想弄一个小程序发布课程信息和打卡功能,作为IT一员就自愿加入了这个小程序开发小组中。虽然小程序面向的是前端工程师,但作为移动端程序猿感觉甚是友好,加上有点前端基础就更是觉得入手很easy啦。

微信小程序的网络请求很便捷,直接调用就可以了。但最好还是根据需求,处理一些参数回调信息,进行二次封装,为整个小程序应用直接提供调方法接口岂不是更好?

利用网络请求的一贯思维,分三个回调:onStart:开始请求, onSuccess:请求成功回调, onFailed:请求失败回调, 意思就是字面意思~

netUtil.js 网络请求工具封装

在utils目录下创建一个netUtil.js文件

/**
 * 供外部post请求调用
 */
function post(url, params, onStart, onSuccess, onFailed) {
 request(url, params, "POST", onStart, onSuccess, onFailed);
}

/**
 * 供外部get请求调用
 */
function get(url, params, onStart, onSuccess, onFailed) {
 request(url, params, "GET", onStart, onSuccess, onFailed);
}

/**
 * function: 封装网络请求
 * @url URL地址
 * @params 请求参数
 * @method 请求方式:GET/POST
 * @onStart 开始请求,初始加载loading等处理
 * @onSuccess 成功回调
 * @onFailed 失败回调
 */
function request(url, params, method, onStart, onSuccess, onFailed) {
 onStart(); //request start
 wx.request({
 url: url,
 data: dealParams(params),
 method: method,
 header: { 'content-type': 'application/json' },
 success: function (res) {
  if (res.data) {
  /** start 根据需求 接口的返回状态码进行处理 */
  if (res.data.error_code == 0) {
   onSuccess(res.data); //request success
  } else {
   onFailed(res.data.msg); //request failed
  }
  /** end 处理结束*/
  }
 },

 fail: function (error) {
  onFailed(""); //failure for other reasons
 }
 })
}

/**
 * function: 根据需求处理请求参数:添加固定参数配置等
 * @params 请求参数
 */
function dealParams(params) {
 return params;
}

module.exports = {
 postRequest: post,
 getRequest: get,
}

小案例使用说明:笑话大全接口

简要描述:用户注册接口
请求URL:http://v.juhe.cn/joke/content/list.php

请求方式:GET

参数:

参数名 必选 类型 说明
sort string 降序“des”,升序“asc”
page int 页数,默认1
pageSize string 默认每页加载20条数据
time string 时间戳10位
key string appkey

返回示例

{
 "error_code": 0,
 "reason": "Success",
 "result": {
  "data": [
   {
    "content": "某先生是地方上的要人。一天,他像往常一样在书房里例览当日报纸,突然对妻子大声喊道:喂,安娜,你看到今天早报上的流言蜚语了吗?真可笑!他们说,你收拾行装出走了。你听见了吗?安娜、你在哪儿?安娜?啊!",
    "hashId": "90B182FC7F74865B40B1E5807CFEBF41",
    "unixtime": 1418745227,
    "updatetime": "2014-12-16 23:53:47"
   },
   {
    "content": "有一天我看着报纸,小声嘟囔着一篇文章的题目鸟儿也有外语,丈夫听了对了一句:鸟儿当然也有‘外遇'。原来丈夫听错了,我笑得前仰后合。",
    "hashId": "206F5C52FD2ED94772CBC66C8AC61F2A",
    "unixtime": 1418745227,
    "updatetime": "2014-12-16 23:53:47"
   }
  ]
 }
}

小程序页面js文件中引入netUtil

var netUtil = require("../../utils/network.js"); //require引入
Page({
 data: {
 jokeList: {}
 },

 onLoad: function (options) {
 var url = "http://v.juhe.cn/joke/content/list.php";
 var params = {
  sort: "",
  page: 1,
  pagesize: 5,
  time: "1418816972",
  key: "746dfdb4cd8445d30a8f915fd2b5f76b",
 }

 netUtil.getRequest(url, params, this.onStart, this.onSuccess, this.onFailed); //调用get方法情就是户数
 },

 onStart: function () { //onStart回调
 wx.showLoading({
  title: '正在加载',
 })
 },
 onSuccess: function (res) { //onSuccess回调
 wx.hideLoading();
 this.setData({
  jokeList: res.result.data //请求结果数据
 })
 },
 onFailed: function (msg) { //onFailed回调
 wx.hideLoading();
 if (msg) {
  wx.showToast({
  title: msg,
  })
 }
 },
})

在wxml文件中绑定请求的笑话大全列表:jokeList

<view>
 <block wx:for="{{jokeList}}" wx:for-item="item" wx:key="idx">
 <view class='joke_container'>
  <text>{{item.content}}</text>
 </view>
 </block>
</view>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
newxtree.js代码
Mar 13 Javascript
javascript 计算两个整数的百分比值
Dec 26 Javascript
javascript鼠标滑动评分控件完整实例
May 13 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
May 16 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
Feb 19 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
Oct 26 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
Feb 22 Javascript
前端面试知识点目录一览
Apr 15 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 13 Javascript
JavaScript链式调用原理与实现方法详解
May 16 Javascript
json字符串传到前台input的方法
Aug 06 #Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 #Javascript
react-native使用leanclound消息推送的方法
Aug 06 #Javascript
json数据传到前台并解析展示成列表的方法
Aug 06 #Javascript
使用js实现将后台传入的json数据放在前台显示
Aug 06 #Javascript
详解小程序原生使用ES7 async/await语法
Aug 06 #Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
Aug 06 #Javascript
You might like
php md5下16位和32位的实现代码
2008/04/09 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
javascript 写类方式之二
2009/07/05 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
javascript常用的方法整理
2015/08/20 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
Python检测生僻字的实现方法
2016/10/23 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
python调用百度语音识别api
2018/08/30 Python
python pytest进阶之fixture详解
2019/06/27 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
青安岗事迹材料
2014/05/14 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
小学大队委竞选口号
2015/12/25 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python