微信小程序之網(wǎng)絡請求簡單封裝實例詳解
創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標,我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領域包括成都網(wǎng)站建設、成都做網(wǎng)站、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。
在微信小程序中實現(xiàn)網(wǎng)絡請求相對于Android來說感覺簡單很多,我們只需要使用其提供的API就可以解決網(wǎng)絡請求問題。
為了數(shù)據(jù)安全,微信小程序網(wǎng)絡請求只支持https,當然各個參數(shù)的含義就不在細說,不熟悉的話可以;可以去閱讀官方文檔的網(wǎng)絡請求api,當我們使用request時header的content-typ默認是application/json,在文檔中指出method 的value必須是大寫,不過經(jīng)過測試,小寫也能請求成功。request默認的超時時間是60s,如果我們想自定義超時時間,我們可以在app.json中加入下面代碼片段,分別設置request,socket,和上傳文件及下載文件的超時時間。
"networkTimeout": { "request": 5000, "connectSocket": 5000, "uploadFile": 5000, "downloadFile": 5000 }
設置過超時時間,我們就開始封裝網(wǎng)絡請求,平時我們所接觸的網(wǎng)絡請求,一般會分為兩類,一類是在后臺運行的,沒有加載對話框提示,另一種就是有提示,如提示正在加載數(shù)據(jù),,那么我們就以此為線索來進行封裝。先創(chuàng)建一個network的網(wǎng)絡請求工具類,然后
// 展示進度條的網(wǎng)絡請求 // url:網(wǎng)絡請求的url // params:請求參數(shù) // message:進度條的提示信息 // success:成功的回調(diào)函數(shù) // fail:失敗的回調(diào) function requestLoading(url, params, message, success, fail) { console.log(params) wx.showLoading({ title: message, }) wx.request({ url: url, data: params, header: { 'content-type': 'application/x-www-form-urlencoded' }, method: 'post', success: function (res) { //console.log(res.data) wx.hideLoading() if (res.statusCode == 200) { success(res.data) } else { fail() } }, fail: function (res) { wx.hideLoading() fail() }, complete: function (res) { }, }) }
上面函數(shù)很好理解,參數(shù)的含義已在代碼中解釋,在網(wǎng)絡請求開始前,先展示Loading對話框,提示用戶當前網(wǎng)絡正在請求數(shù)據(jù),當網(wǎng)絡請求成功或者失敗后調(diào)用wx.hideLoading()取消提示框的展示。在api中還提供了wx.showNavigationBarLoading()用于顯示當前頁面的導航條加載動畫,那么如果我們想展示這個動畫可以在requestLoading執(zhí)行開始調(diào)用wx.showNavigationBarLoading(),然后在網(wǎng)絡請求成功或者失敗后調(diào)用wx.hideNavigationBarLoading()隱藏導航欄加載動畫。
當網(wǎng)絡請求成功并且狀態(tài)碼為200時,將請求到的數(shù)據(jù)回調(diào)通過success(res.data)回調(diào)給我們的方法,在上面我們沒有對失敗原因進行細分,當然你也可以給失敗回調(diào)加個參數(shù),用于提示用戶失敗的原因,如res.statusCode ==500時提示服務器內(nèi)部錯誤,res.statusCode ==-1時提示請檢查網(wǎng)絡,res.statusCode ==404,找不到地址等等。
然后我們在創(chuàng)建一個不顯示對話框,用戶后臺請求數(shù)據(jù)的請求函數(shù),為了少寫代碼,我們共用上面的函數(shù),如下
//不顯示對話框的請求 function request(url, params, success, fail) { this.requestLoading(url, params, "", success, fail) }
我們看到我們最終還是調(diào)用的requestLoading,那么我們可以在該函數(shù)作下判斷,如果提示信息message==''就不顯示對話框。
最終的代碼
function request(url, params, success, fail) { this.requestLoading(url, params, "", success, fail) } // 展示進度條的網(wǎng)絡請求 // url:網(wǎng)絡請求的url // params:請求參數(shù) // message:進度條的提示信息 // success:成功的回調(diào)函數(shù) // fail:失敗的回調(diào) function requestLoading(url, params, message, success, fail) { console.log(params) wx.showNavigationBarLoading() if (message != "") { wx.showLoading({ title: message, }) } wx.request({ url: url, data: params, header: { //'Content-Type': 'application/json' 'content-type': 'application/x-www-form-urlencoded' }, method: 'post', success: function (res) { //console.log(res.data) wx.hideNavigationBarLoading() if (message != "") { wx.hideLoading() } if (res.statusCode == 200) { success(res.data) } else { fail() } }, fail: function (res) { wx.hideNavigationBarLoading() if (message != "") { wx.hideLoading() } fail() }, complete: function (res) { }, }) } module.exports = { request: request, requestLoading: requestLoading }
使用就很簡單了,如下
//路徑根據(jù)自己項目路徑修改 var network = require("/utils/network.js") getData:function(){ network.requestLoading(URL.MY_SCORE, that.data.params, '正在加載數(shù)據(jù)', function (res) { //res就是我們請求接口返回的數(shù)據(jù) console.log(res) }, function () { wx.showToast({ title: '加載數(shù)據(jù)失敗', }) }) }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
本文題目:微信小程序之網(wǎng)絡請求簡單封裝實例詳解
瀏覽路徑:http://www.ekvhdxd.cn/article49/gegihh.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、服務器托管、網(wǎng)站導航、云服務器、網(wǎng)站維護、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)