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


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链式操作如何实现以及为什么要用链式操作
Jan 17 Javascript
固定背景实现的背景滚动特效示例分享
May 19 Javascript
jQuery实用函数用法总结
Aug 29 Javascript
Three.js学习之正交投影照相机
Aug 01 Javascript
Javascript实现登录记住用户名和密码功能
Mar 22 Javascript
AngularJS实现表单元素值绑定操作示例
Oct 11 Javascript
在vue项目中使用md5加密的方法
Sep 14 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 Javascript
微信小程序request请求封装,验签代码实例
Dec 04 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 Javascript
vue封装数字翻牌器
Apr 20 Vue.js
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面向对象
2012/02/22 PHP
33道php常见面试题及答案
2015/07/06 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
Javascript 布尔型分析
2008/12/22 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
某公司Java工程师面试题笔试题
2016/03/27 面试题
机械设计及其自动化求职推荐信
2014/02/17 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
自荐信格式模板
2015/03/27 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
工作年限证明模板
2015/06/15 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL