微信小程序网络封装-简单高效
废话引言
小程序虽然出世很久了,但一直没怎么接触到小程序开发。吉他兴趣班老师想弄一个小程序发布课程信息和打卡功能,作为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 | 否 | int | 默认每页加载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>
微信小程序网络封装-简单高效的更多相关文章
- 微信小程序 网络请求之re.request 和那些坑
		微信小程序有四种网络请求类型,下面只详细介绍普通HTTPS请求(wx.request) 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ... 
- 微信小程序:封装全局的promise异步调用方法
		微信小程序:封装全局的promise异步调用方法 一:封装 function POST(url, params) { let promise = new Promise(function (resol ... 
- 微信小程序 wxs的简单应用
		Demo地址:微信小程序wxs的简单应用 案例分析 张三.李四.王五,各自分别都有数量不等的车,现在需要列表显示名字及他们拥有车的数量, list数据结构如下,当我们使用wx:for进行显示时,发现个 ... 
- 微信小程序网络请求wx.request请求
		最近微信小程序开始开放测试了,小程序提供了很多api,极大的方便了开发者,其中网络请求api是wx.request(object),这是小程序与开发者的服务器实现数据交互的一个很重要的api. 百牛信 ... 
- 微信小程序接口封装、原生接口封装、request、promise封装
		相信大家在做微信小程序的时候会有很多地方需要调用接口,就和pc以及手机端一样,多个页面多次调用会有很多状态,那为了节省大家的开发时间就会需要给请求的接口做一些简单封装,便于开发,在这里我用了两个js, ... 
- 第三篇、微信小程序-网络请求API
		wx.request(OBJECT)发起的是https请求.一个微信小程序,同时只能有5个网络请求连接. OBJECT参数说明: 效果图: net.js Page({ data:{ result:{} ... 
- 微信小程序 网络请求之设置合法域名
		设置域名 登录微信公众号后台小程序中 设置→开发设置→服务器设置 必须设置域名,微信小程序才能进行网络通讯,不然会报错 如果设置好了合法域名,开发工具还提示不在合法域名列表中,因为在微信会有一段时间的 ... 
- 微信小程序web-view的简单思考和实践
		微信小程序的组件web-view推出有一段时间了,这个组件的推出可以说是微信小程序开发的一个重要事件,让微信小程序不会只束缚在微信圈子里了,打开了一个口子,这个口子或许还比较小,但未来有无限可能. 简 ... 
- 微信小程序之封装http请求
		下面将封装http请求服务部分的服务以及引用部分 // 本服务用于封装请求 // 返回的是一个promisepromise var sendRrquest = function (url, metho ... 
随机推荐
- (转)php语法(符号用法)
			转自:http://blog.unvs.cn/archives/php-equal-bracket.html 学习PHP过程中,会常碰到一些特殊的符号,比如:=.==.===.->.=>. ... 
- linux 修改ip 地址
			1./etc/sysconfig/network-scripts/ifcfg-网卡 如果是新网卡 自己写配置文档 ip a 即可查看网卡名字 (这是eno16777736) BOOTPROTO= dh ... 
- kepware http接口 c语言 ruby
			读取某变量的值 require 'uri' require 'net/http' url = URI("http://127.0.0.1:39321/iotgateway/read?ids= ... 
- 【python 字典、json】python字典和Json的相互转换
			[python 字典.json]python字典和Json的相互转换 dump/dumps字典转换成json load/loadsjson转化成字典 dumps.loads直接输出字符 dump.lo ... 
- PHP搜索  搜索   搜索
			//搜索界面 public function search(){ $param=input('param.'); $where=[]; //搜索框 if(!empty($param['content' ... 
- panda
			这个项目很有意思,麻雀虽小五脏俱全. 页面使用rem和media query来设置字体和元素宽高image居中需要用到position 后端mysql使用阿里云的rds:nodejs的mysql模块的 ... 
- expect 安装使用
			expect 命令相当于crt远程连接,可用于脚本化实现多服务器巡检功能. 一.expect 命令安装: 1.rpm 文件下载:百度云链接:http://pan.baidu.com/s/1sl1wSU ... 
- Java学习--基本数据类型的定义和运算2
			例1 public class OperateDemo01{ public static void main(String args[]){ int num = 22 ; System.out.pri ... 
- wpf APlayer 播放
			效果图: 进入 迅雷开发者中心 下载最新SDK与解码库 注:解压最新SDK,运行install.bat. 解压完美解码库将codecs文件拷贝到项目Debug下 源码地址 :链接:https://pa ... 
- AJPFX外汇的常见形态
			AJPFX:外汇价常见形态 外汇的价格,本质上是由供求关系决定的,但是在技术分析的世界里,是什么原因导致供求关系的改变并不重要,也没有人能准确的找出所有的因素并加以判断,但是供求关系被改变后的外汇走势 ... 
