欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-26 10:02:07
废话引言 小程序虽然出世很久了,但一直没怎么接触到小程序开发。吉他兴趣班老师想弄一个小程序发布课程信息和打卡功能,作为it一员就自愿加入了这个小程序开发小组中。虽然小...

废话引言

小程序虽然出世很久了,但一直没怎么接触到小程序开发。吉他兴趣班老师想弄一个小程序发布课程信息和打卡功能,作为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>

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