微信小程序網(wǎng)絡(luò)封裝(簡單高效)
廢話引言
小程序雖然出世很久了,但一直沒怎么接觸到小程序開發(fā)。吉他興趣班老師想弄一個(gè)小程序發(fā)布課程信息和打卡功能,作為IT一員就自愿加入了這個(gè)小程序開發(fā)小組中。雖然小程序面向的是前端工程師,但作為移動(dòng)端程序猿感覺甚是友好,加上有點(diǎn)前端基礎(chǔ)就更是覺得入手很easy啦。
微信小程序的網(wǎng)絡(luò)請(qǐng)求很便捷,直接調(diào)用就可以了。但最好還是根據(jù)需求,處理一些參數(shù)回調(diào)信息,進(jìn)行二次封裝,為整個(gè)小程序應(yīng)用直接提供調(diào)方法接口豈不是更好?
利用網(wǎng)絡(luò)請(qǐng)求的一貫思維,分三個(gè)回調(diào):onStart:開始請(qǐng)求, onSuccess:請(qǐng)求成功回調(diào), onFailed:請(qǐng)求失敗回調(diào), 意思就是字面意思~
netUtil.js 網(wǎng)絡(luò)請(qǐng)求工具封裝
在utils目錄下創(chuàng)建一個(gè)netUtil.js文件
/**
* 供外部post請(qǐng)求調(diào)用
*/
function post(url, params, onStart, onSuccess, onFailed) {
request(url, params, "POST", onStart, onSuccess, onFailed);
}
/**
* 供外部get請(qǐng)求調(diào)用
*/
function get(url, params, onStart, onSuccess, onFailed) {
request(url, params, "GET", onStart, onSuccess, onFailed);
}
/**
* function: 封裝網(wǎng)絡(luò)請(qǐng)求
* @url URL地址
* @params 請(qǐng)求參數(shù)
* @method 請(qǐng)求方式:GET/POST
* @onStart 開始請(qǐng)求,初始加載loading等處理
* @onSuccess 成功回調(diào)
* @onFailed 失敗回調(diào)
*/
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 根據(jù)需求 接口的返回狀態(tài)碼進(jìn)行處理 */
if (res.data.error_code == 0) {
onSuccess(res.data); //request success
} else {
onFailed(res.data.msg); //request failed
}
/** end 處理結(jié)束*/
}
},
fail: function (error) {
onFailed(""); //failure for other reasons
}
})
}
/**
* function: 根據(jù)需求處理請(qǐng)求參數(shù):添加固定參數(shù)配置等
* @params 請(qǐng)求參數(shù)
*/
function dealParams(params) {
return params;
}
module.exports = {
postRequest: post,
getRequest: get,
}
小案例使用說明:笑話大全接口
簡要描述:用戶注冊(cè)接口
請(qǐng)求URL:http://v.juhe.cn/joke/content/list.php
請(qǐng)求方式:GET
參數(shù):
| 參數(shù)名 | 必選 | 類型 | 說明 |
|---|---|---|---|
| sort | 否 | string | 降序“des”,升序“asc” |
| page | 否 | int | 頁數(shù),默認(rèn)1 |
| pageSize | 否 | string | 默認(rèn)每頁加載20條數(shù)據(jù) |
| time | 是 | string | 時(shí)間戳10位 |
| key | 是 | string | appkey |
返回示例
{
"error_code": 0,
"reason": "Success",
"result": {
"data": [
{
"content": "某先生是地方上的要人。一天,他像往常一樣在書房里例覽當(dāng)日?qǐng)?bào)紙,突然對(duì)妻子大聲喊道:喂,安娜,你看到今天早報(bào)上的流言蜚語了嗎?真可笑!他們說,你收拾行裝出走了。你聽見了嗎?安娜、你在哪兒?安娜???!",
"hashId": "90B182FC7F74865B40B1E5807CFEBF41",
"unixtime": 1418745227,
"updatetime": "2014-12-16 23:53:47"
},
{
"content": "有一天我看著報(bào)紙,小聲嘟囔著一篇文章的題目鳥兒也有外語,丈夫聽了對(duì)了一句:鳥兒當(dāng)然也有‘外遇'。原來丈夫聽錯(cuò)了,我笑得前仰后合。",
"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); //調(diào)用get方法情就是戶數(shù)
},
onStart: function () { //onStart回調(diào)
wx.showLoading({
title: '正在加載',
})
},
onSuccess: function (res) { //onSuccess回調(diào)
wx.hideLoading();
this.setData({
jokeList: res.result.data //請(qǐng)求結(jié)果數(shù)據(jù)
})
},
onFailed: function (msg) { //onFailed回調(diào)
wx.hideLoading();
if (msg) {
wx.showToast({
title: msg,
})
}
},
})
在wxml文件中綁定請(qǐng)求的笑話大全列表:jokeList
<view>
<block wx:for="{{jokeList}}" wx:for-item="item" wx:key="idx">
<view class='joke_container'>
<text>{{item.content}}</text>
</view>
</block>
</view>
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 微信小程序 數(shù)據(jù)封裝,參數(shù)傳值等經(jīng)驗(yàn)分享
- 微信小程序 使用picker封裝省市區(qū)三級(jí)聯(lián)動(dòng)實(shí)例代碼
- 微信小程序?qū)崿F(xiàn)自定義modal彈窗封裝的方法
- 微信小程序之網(wǎng)絡(luò)請(qǐng)求簡單封裝實(shí)例詳解
- 微信小程序 es6-promise.js封裝請(qǐng)求與處理異步進(jìn)程
- 微信小程序 wx.request方法的異步封裝實(shí)例詳解
- 微信小程序 request接口的封裝實(shí)例代碼
- 微信小程序 http請(qǐng)求封裝詳解及實(shí)例代碼
- 微信小程序 封裝http請(qǐng)求實(shí)例詳解
- 詳解微信小程序網(wǎng)絡(luò)請(qǐng)求接口封裝實(shí)例
相關(guān)文章
js實(shí)現(xiàn)數(shù)組冒泡排序、快速排序原理
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)數(shù)組冒泡排序、快速排序的原理,感興趣的小伙伴們可以參考一下2016-03-03
教你用Uniapp實(shí)現(xiàn)微信小程序的GPS定位打卡
地圖組件用于展示地圖,而定位API只是獲取坐標(biāo),請(qǐng)勿混淆兩者,下面這篇文章主要給大家介紹了關(guān)于如何使用Uniapp實(shí)現(xiàn)微信小程序的GPS定位打卡的相關(guān)資料,需要的朋友可以參考下2022-11-11
JavaScript省市級(jí)聯(lián)下拉菜單實(shí)例
這篇文章主要為大家詳細(xì)介紹了JavaScript省市級(jí)聯(lián)下拉菜單實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
js與jquery分別實(shí)現(xiàn)tab標(biāo)簽頁功能的方法
這篇文章主要介紹了js與jquery分別實(shí)現(xiàn)tab標(biāo)簽頁功能的方法,結(jié)合實(shí)例形式對(duì)比分析了javascript與jQuery分別實(shí)現(xiàn)tab標(biāo)簽功能的操作技巧,需要的朋友可以參考下2016-11-11
擴(kuò)展bootstrap的modal模態(tài)框-動(dòng)態(tài)添加modal框-彈出多個(gè)modal框
這篇文章主要介紹了擴(kuò)展bootstrap的modal模態(tài)框-動(dòng)態(tài)添加modal框-彈出多個(gè)modal框,需要的朋友可以參考下2017-02-02
uni-app 組件里面獲取元素寬高的實(shí)現(xiàn)
這篇文章主要介紹了uni-app 組件里面獲取元素寬高的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
JavaScript 下載鏈接圖片后上傳的實(shí)現(xiàn)
這篇文章主要介紹了JavaScript 下載鏈接圖片后上傳的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Bootstrap下拉菜單Dropdowns的實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Bootstrap下拉菜單Dropdowns的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Js日期選擇自動(dòng)填充到輸入框(界面漂亮兼容火狐)
本文為大家寫了個(gè)很漂亮、兼容火狐的Js日期選擇,自動(dòng)填充到輸入框,代碼如下,有需要的朋友可以參考下2013-08-08

