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


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 相关文章推荐
Jquery ui css framework
Jun 28 Javascript
jQuery中append()方法用法实例
Dec 25 Javascript
jQuery实现contains方法不区分大小写的方法
Feb 13 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
Nov 12 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
Jan 24 Javascript
Vue.js父与子组件之间传参示例
Feb 28 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
Mar 09 Javascript
JS实现unicode和UTF-8之间的互相转换互转
Jul 05 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
Jul 21 Javascript
在vue项目实现一个ctrl+f的搜索功能
Feb 28 Javascript
js实现简易计算器小功能
Nov 18 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文件上传原理简单分析
2011/05/29 PHP
php日历制作代码分享
2014/01/20 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
JavaScript实现简单日历效果
2020/09/11 Javascript
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
Python 错误和异常代码详解
2018/01/29 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
Python文件操作函数用法实例详解
2019/12/24 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
门卫岗位职责
2013/11/15 职场文书
项目资料员岗位职责
2013/12/10 职场文书
微观物理专业自荐信
2014/01/26 职场文书
主持人演讲稿
2014/05/13 职场文书
2014年作风建设心得体会
2014/10/22 职场文书
2015年重阳节主持词
2015/07/04 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
js 数组 fill() 填充方法
2021/11/02 Javascript