廢話引言
小程序雖然出世很久了,但一直沒怎么接觸到小程序開發。吉他興趣班老師想弄一個小程序發布課程信息和打卡功能,作為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>
