微信小程序網絡封裝-簡單高效

廢話引言

小程序雖然出世好久了,但一直沒怎麼接觸到小程序開發。吉他興趣班老師想弄一個小程序發佈課程信息和打卡功能,做爲IT一員就自願加入了這個小程序開發小組中。雖然小程序面向的是前端工程師,但做爲移動端程序猿感受甚是友好,加上有點前端基礎就更是以爲入手很easy啦。php

微信小程序的網絡請求很便捷,直接調用就能夠了。但最好仍是根據需求,處理一些參數回調信息,進行二次封裝,爲整個小程序應用直接提供調方法接口豈不是更好?前端

利用網絡請求的一向思惟,分三個回調:onStart:開始請求, onSuccess:請求成功回調, onFailed:請求失敗回調, 意思就是字面意思~json

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文件中綁定請求的笑話大全列表:jokeListapp

<view>
   <block wx:for="{{jokeList}}" wx:for-item="item" wx:key="idx">
    <view class='joke_container'>
      <text>{{item.content}}</text>
    </view>
 </block>
</view>
相關文章
相關標籤/搜索