国产三级韩国三级日产三级剧情_天天爱夜夜操_免费观看亚洲人成网站_超碰9999_精品伊人久久久大香线蕉天堂_深夜在线观看

18842388900

網站建設 APP開發 小程序

Article/文章

記錄成長點滴 分享您我感悟

您當前位置>首頁 > 知識 > 軟件開發

小程序如何實現網絡請求 (詳細過程)

發表時間:2019-05-20 08:50:36

文章來源:沈陽網站建設

標簽:api 網絡請求

分享:

瀏覽次數:0

本篇文章給大家帶來的內容是關于小程序如何實現網絡請求 (詳細過程),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

對于小程序而言,網絡請求封裝的要比Android強大多了,這一點值得贊揚。官方示例:

wx.request({  url: 'test.php', //僅為示例,并非真實的接口地址  data: {     x: '' ,     y: ''  },  header: {    'content-type': 'application/json' // 默認值  },  success: function(res) {    console.log(res.data)  }})

but…but…這調用起來貌似很簡單,但是,似乎有點不對勁?哪兒不對勁呢——每次調用的代碼太多了。而且,對于網絡請求的日志文件不好管理。這離我們最理想的方式還是有點差距的。
那么,我們最理想的方式是希望是怎么樣的呢?

1、代碼簡潔,一行代碼去搞定。
2、對于常用的字段統一封裝管理。如 token、版本號version等
3、自定義異常處理。如未登錄時,不用每寫一個接口都去判斷是否登錄、注冊等

 api.request1(d沈陽APP軟件

<a href=http://www.lglu.com.cn target=_blank class=infotextkey>沈陽<a href=http://www.lglu.com.cn target=_blank class=infotextkey>軟件開發</a></a>,<a href=http://www.lglu.com.cn target=_blank class=infotextkey>沈陽<a href=http://www.lglu.com.cn target=_blank class=infotextkey>軟件公司</a></a>

ata, function (result) { //數據請求成功, }, function(error){//失敗 })

那么,基于上面的問題。我來一步步進行剖析。

一、網絡請求的場景分析1、支持token傳入的網絡請求。

這種情況比較少見的。我現在的項目中就遇到了。大概意思是管理員可以操作旗下的其他的虛擬用戶。管理員登錄后生成一個token,每生成一個成員時,會生成一個虛擬的virtualToekn,以后每次管理員操作這個成員時,都需要用這個virtualToken,但是管理員獲取自己的信息時,還是需要用自己的token。這個時候就要支持自定義的token傳入了。

2、網絡請求的劫持。

這種場景主要有兩種情況:

1、如果網絡失敗
2、沒有token時,這種場景主要出現在登錄后置中。如商城類app查看購物車等

解決方法:直接返回失敗,在發起網絡請求前結束本次網絡請求操作,減少預知的錯誤網絡訪問

3、支持自定義loading窗的彈出和隱藏控制

1、loading窗的彈出:這種場景比較多,如下拉刷新列表時,是不需要loading窗出現的。但是獲取用戶信息是需要loading出現的
2、loading窗的隱藏:這種場景是如果調用一個接口成功后,然后要連續調用第二個接口。這樣在第一次接口成功后,不應該讓loading窗消失,而是最后一次接口結束后才隱藏。

4、對網絡不同的錯誤,進行處理二、代碼分析
/** * 自定義token  請求 *  * isShowLoading :true  彈出loading窗 * isEndLoading: true  最后需要隱藏loading窗。若是false,則不隱藏 * token: 可以自定義token。用戶虛擬賬號使用車輛 */ export function requestApi(requestData, isShowLoading = true,isEndLoading = true, token = null,onSuccess, onFail) {   let app = getApp().globalData;  // 1、檢查是否已經登錄,在未登錄的時候,可以提前緩存一個臨時token欺騙本次檢查。等登錄完成后,再更新token值  if (!util.hasLogin()) {    return;  }  // 2、檢查網絡狀態  if (!util.checkNetworkConnected()) { //沒有網絡    onFail("網絡請求失敗,稍后再試")    return;  }  if (!requestData) {    onFail("數據異常,請稍后再試")    return;  }  let cacheToken =  util.takeToken()  let newToken = token == null ? cacheToken : token  console.log("newToken===========>", newToken)  requestData.token = newToken  requestData.version = app.version  console.log("==================================================開始請求網絡數據start========================================")  console.log(requestData)  console.log("==================================================開始請求網絡數據end===========================================")  var baseUrl = app.debug ? app.debugUrl : app.releaseUrl      console.log("===baseUrl===>" + baseUrl)  if (isShowLoading){    util.showLoading("加載中")  }  const requestTask = wx.request({    url: baseUrl,    data: requestData,    header: {      'content-type': 'application/json'    },    method: 'POST',    dataType: 'json',    success: function(res) {      console.log("==================================================返回請求結果start========================================")      console.log(res.data)      console.log("==================================================返回請求結果end===========================================")            if (res.data.code == 0) { //成功        // console.log("onSuccess===========>", onSuccess);        onSuccess(res.data)      } else if (res.data.code == 1021) { //未繳納押金        wx.navigateTo({          url: '/pages/recharge/recharge',        })        return false;      } else if (res.data.code == 1006) { //余額不足        wx.navigateTo({          url: '/pages/deposited/deposited',        })        return false;      } else if (res.data.code == 1019) { //未實名        wx.navigateTo({          url: '/pages/certify/certify',        })        return false;      } else if (res.data.code == 1001) { //token過期        wx.reLaunch({          url: '/pages/login/login'        });        return false;      } else { //失敗        let error = res.data == null || typeof (res.data) == "undefined" ? "網絡請求失敗,請稍后再試" : res.data.desc        onFail(error)        console.log("error===========>", error);      }    },    fail: function(res) {      console.log("onFail===========>", res);      onFail("網絡請求失敗,稍后再試")    },    complete: function(res) {      console.log("complete===========>", isEndLoading);            if (isEndLoading){        wx.hideLoading()      }    }  })};              
              

api,網絡請求

相關案例查看更多

主站蜘蛛池模板: 国产丝袜无码一区二区视频 | 精品一区二区三区视频在线观看 | 国产无限免费av在线播放 | 亚洲52av| 国产老妇伦国产熟女老妇高清 | 精品国产一区二区三区国产区 | 一区二区在线观看免费 | 成人免费a级毛片韩国 | 精品亚洲成a人片在线观看 无码精品A在线观看无 | 麻豆宣传片 | 欧美人与牲禽ⅩXXX伦交 | 久久99国产精品免费网站 | 午夜三级a三级三点在线观看 | 全黄h全肉边做边吃奶流浪汉 | 国产一区二区在线观看免费视频 | 男女啪啪激烈高潮喷出动态图 | 青青草超碰在线 | 97视频一二区 | 久久亚洲综合色一区二区三区 | 亚洲精品中文字幕中文字幕 | 国产大片全部免费看 | 久久免费的视频 | 好紧好爽午夜视频 | 吃奶网站 | 动漫AV网站免费观看 | 91视频入口 | 日本高清在线一区二区三区 | 国产精品一级毛片在线 | 国产蜜臀AV在线一区二区三区 | 波多野吉衣视频在线观看 | 懂色av一区在线播放 | 黄色片子在线看 | 亚洲AV永久无码精品天堂动漫 | 无套内谢少妇毛片aaaa片免费 | 97精华最好的产品在线 | 在线国产精品视频 | 无码AV中文字幕久久专区 | 很黄很污的视频 | 最新黄色av网站 | 精品无码无人网站免费视频 | 中文视频一区视频二区视频三区 |