寫多 之后,吸取之前的經(jīng)驗(yàn),瞎寫了一個(gè)簡單的封裝api,有幸看到的朋友,就隨便看看哈,如果能給到你幫助就一直棒了,額呵呵呵!
對(duì)應(yīng)的返回狀態(tài)碼要根據(jù)怎么公司的返回碼的規(guī)定改了哈
let CONSTANT = require('./constant') // 從本地存儲(chǔ)Storage中獲取token值 function getToken() { return wx.getStorageSync(CONSTANT.TOKEN); } // 創(chuàng)建請(qǐng)求頭header的內(nèi)容 function buildHeaders(isJson) { let headers = { "Content-Type": isJson ? 'application/json' : "application/x-www-form-urlencoded", "version": CONSTANT.MINI_VERSION, }; const token = getToken(); if (token) { headers["token"] = token; } return headers; } // 發(fā)起 HTTPS 網(wǎng)絡(luò)請(qǐng)求。 let baseURL = CONSTANT.API_URL; function fetchApi(baseURL, url, params, method, isJson) { // wx.getNetworkType判斷網(wǎng)路類型。eg:wifi、2g、3g...;none值表示無網(wǎng)路 wx.getNetworkType({ success: function(res) { // &&表示“并”"none" === e.networkType如果為真,才會(huì)去執(zhí)行&&后面的內(nèi)容,否則不執(zhí)行 "none" === res.networkType && (wx.hideLoading(), wx.showModal({ title: "提示", content: "當(dāng)前無網(wǎng)絡(luò),請(qǐng)檢查網(wǎng)絡(luò)設(shè)置后重新加載", showCancel: false })); } }); return new Promise((resolve, reject) => { wx.request({ url: `${baseURL}${url}`, method: method, header: buildHeaders(isJson), data: params, success: function(res) { // 成功返回statusCode參數(shù)表示開發(fā)者服務(wù)器返回的 HTTP 狀態(tài)碼 // 統(tǒng)一攔截提示錯(cuò)誤 // var o = res.statusCode; // if (o !== 200 && [21020000, 41020001, 41020003, 21020002].indexOf(res.data.status) == -1) { // wx.hideLoading(); // wx.showModal({ // title: "提示", // content: res.data.msg // }); // return; // } 2020.3.9 // 41020001表示未登錄那就要去拿code值 // 21020002表示登錄超時(shí) // 并重新請(qǐng)求獲取token值 if (41020001 == res.data.status || 21020002 === res.data.status) { wx.login({ success: res => { wx.request({ url: baseURL + "/api/user/login", method: "GET", header: { "token": "", "version": CONSTANT.MINI_VERSION, }, data: { code: res.code, }, success: function(res) { wx.removeStorageSync(CONSTANT.TOKEN); if (21020000 === res.data.status) { wx.setStorageSync(CONSTANT.TOKEN, res.data.data); console.log("already refresh token"); fetchApi(url, url, params, method); } } }); } }); } // 41020003表示未授權(quán)了直接跳轉(zhuǎn)到授權(quán)頁(請(qǐng)求授權(quán)獲取用戶信息) else if (41020003 == res.data.status) { wx.redirectTo({ url: "/pages/accredit/accredit" }); } else { resolve(res.data); } }, fail: function(res) { reject(res.data); console.log("network fail.", res); }, complete: function(res) { reject(res.data); // console.log('complete', res); } }); }); }; module.exports = { // 首頁 getIndex(params) { return fetchApi(baseURL, '/api/index', params, 'GET'); }, }
在需要的頁面引用,也可以只引用你需要的那一個(gè)方法也行的額
api.getIndex().then(res => { ...... //那到返回值之后要執(zhí)行的內(nèi)容 }
哈哈哈,完了