国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

小程序如何完成網絡請求 (詳細過程)

小程序如何完成網絡請求 (詳細過程)

更新時間:2025-09-20 文章作者:未知 信息來源:網絡 閱讀次數:

微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一...
微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創新,經過將近兩年的發展,已經構造了新的小程序開發環境和開發者生態。

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

對于小程序而言,網絡請求封裝的要比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(data, 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()
      }
    }
  })
};

三、網絡環境統一切換。

在app.json中統一配置

  // 全局的數據,可以提供給所有的page頁面使用
  globalData: {
    token: "",
    version: "version版本號",
    releaseUrl: "正式版url",
    debugUrl: "測試版url",    debug: true   //true  debug環境,false正式環境
  },

這樣,以后切換網絡環境只需要修改debug值即可。

四、二次封裝

/**
 * 自定義loading  框請求
 * 
 * isShowLoading :true  彈出loading窗
 * isEndLoading: true  最后需要隱藏loading窗。若是false,則不隱藏
 */
 export function request(requestData, isShowLoading = true, isEndLoading = true, onSuccess, onFail){  
 this.requestApi(requestData, isShowLoading, isEndLoading, null, function (result) {
    onSuccess(result)
  }, function (error) {
    onFail(error)
  })
}/**
 *  帶有loading 框的 不能自定義的請求
 * 
 */export function request1(requestData, onSuccess, onFail) {  // console.log("onSuccess========request1===>", success, fail);
  requestApi(requestData, true, true, null, function (result) {
    onSuccess(result)
  }, function (error) {
    onFail(error)
  })
}/**
 * 自定義token  請求
 * 
 * isShowLoading :true  彈出loading窗
 * isEndLoading: true  最后需要隱藏loading窗。若是false,則不隱藏
 * token: 可以自定義token。用戶虛擬賬號使用車輛
 */export function request2(requestData, isShowLoading = true, isEndLoading = true, token = null, onSuccess, onFail) {
  requestApi(requestData, isShowLoading, isEndLoading, token, function (result) {
    onSuccess(result)
  }, function (error) {
    onFail(error)
  })
}/**
 * 自定義loading  框請求
 * 
 * isShowLoading :true  彈出loading窗
 * isEndLoading: true  最后需要隱藏loading窗。若是false,則不隱藏
 */export function request3(requestData, isShowLoading = true, isEndLoading = true, token, onSuccess, onFail) {
  requestApi(requestData, isShowLoading, isEndLoading, token, function (result) {
    onSuccess(result)
  }, function (error) {
    onFail(error)
  })
}

end

最后,控制臺查看日志的示意圖為:
20180915143125445.png

以上就是小程序如何實現網絡請求 (詳細過程)的詳細內容,更多請關注php中文網其它相關文章!


小程序是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        亚洲国产精品二十页| 91网站在线观看视频| 国产一区二区久久| 88在线观看91蜜桃国自产| 一区二区三区四区不卡视频| 一本在线高清不卡dvd| 综合久久国产九一剧情麻豆| 国产不卡在线一区| 亚洲国产精品激情在线观看| av中文字幕亚洲| 综合久久一区二区三区| 欧洲一区二区三区在线| 亚洲国产精品一区二区尤物区| 欧美色图片你懂的| 久久福利资源站| 亚洲欧洲韩国日本视频| 欧美年轻男男videosbes| 国产一区二区精品久久91| 中文字幕一区二区三区不卡 | 欧美午夜精品久久久| 性做久久久久久| 国产日产欧美一区二区视频| 91看片淫黄大片一级在线观看| 五月综合激情日本mⅴ| 欧美国产丝袜视频| 欧美日韩国产免费| 成人美女在线视频| 青青草国产成人av片免费| 国产精品视频你懂的| 欧美精品欧美精品系列| 国产91精品精华液一区二区三区| 亚洲电影在线播放| 中文字幕不卡在线| 26uuu欧美| 欧美美女一区二区在线观看| 99这里只有精品| 国产精品资源在线| 久久精品国产一区二区| 亚洲综合一区在线| 中文字幕在线免费不卡| 精品999在线播放| 91精品国产91久久久久久一区二区 | 日韩国产欧美在线视频| 国产精品三级av在线播放| 日韩久久久精品| 欧美日韩免费观看一区二区三区| 国产成人亚洲综合a∨婷婷图片| 日本美女一区二区| 亚洲18女电影在线观看| 一个色在线综合| 亚洲欧美电影院| 欧美激情一区在线| 久久久精品tv| 久久久亚洲欧洲日产国码αv| 欧美一二三区精品| 日韩一区二区三区视频在线观看| 欧洲亚洲精品在线| 欧美视频一二三区| 欧美日韩精品一区二区天天拍小说| av成人免费在线观看| 波多野结衣欧美| 色综合天天综合网天天看片 | 国产综合色在线| 国内精品嫩模私拍在线| 国产精品中文字幕一区二区三区| 国产麻豆精品在线观看| 国产suv精品一区二区三区| 国产麻豆午夜三级精品| 成人网页在线观看| 91美女蜜桃在线| 欧美丝袜丝交足nylons| 在线播放/欧美激情| 欧美美女bb生活片| 欧美精品一区二区三区蜜桃| 久久精品视频免费观看| 自拍偷拍欧美精品| 午夜视频在线观看一区二区三区| 日产欧产美韩系列久久99| 久久精品二区亚洲w码| 国产一区二区三区av电影| www.亚洲人| 制服丝袜中文字幕一区| 久久精品一区蜜桃臀影院| 亚洲人吸女人奶水| 人人超碰91尤物精品国产| 国产寡妇亲子伦一区二区| av电影天堂一区二区在线观看| 欧美综合一区二区三区| 欧美va亚洲va国产综合| 亚洲视频电影在线| 日韩国产一二三区| av资源网一区| 日韩午夜精品视频| 欧美日韩综合色| 欧美精品一区二区高清在线观看| 国产精品丝袜久久久久久app| 亚洲永久免费视频| 国产黄色精品网站| 在线播放91灌醉迷j高跟美女| 久久蜜桃av一区二区天堂| 亚洲一区成人在线| 国产v日产∨综合v精品视频| 欧美日韩亚洲另类| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲综合色区另类av| 波多野结衣欧美| 国产亚洲欧美色| 乱中年女人伦av一区二区| 欧美在线视频全部完| 欧美激情综合在线| 毛片不卡一区二区| 精品污污网站免费看| 日韩美女视频一区| 国产剧情一区二区三区| 欧美高清精品3d| 一区二区三区.www| www.av精品| 国产精品免费免费| 国产一区二区三区黄视频 | 在线日韩av片| 中文一区一区三区高中清不卡| 日韩黄色小视频| 欧洲精品视频在线观看| 国产精品毛片无遮挡高清| 蜜臀av性久久久久蜜臀aⅴ流畅| 色94色欧美sute亚洲线路二 | 欧美一区二区三区爱爱| 亚洲综合在线五月| av中文字幕不卡| 中文字幕av免费专区久久| 国产精品一区二区男女羞羞无遮挡| 欧美videossexotv100| 青青草精品视频| 欧美一级高清大全免费观看| 五月婷婷综合激情| 欧美一二三四区在线| 久久精品国产精品青草| 3d成人动漫网站| 日本欧美大码aⅴ在线播放| 91精品国产综合久久小美女| 青青草97国产精品免费观看| 91精品国产综合久久久蜜臀粉嫩| 日韩黄色小视频| 日韩欧美电影一区| 国产一区久久久| 欧美国产成人精品| 91在线观看免费视频| 午夜欧美大尺度福利影院在线看| 欧美日韩一区小说| 视频一区二区三区入口| 7777精品伊人久久久大香线蕉的| 五月激情综合婷婷| 日韩一级二级三级| 国产黑丝在线一区二区三区| 国产精品国产三级国产a | 国产一区二区不卡在线| 久久伊人蜜桃av一区二区| 高清不卡在线观看| 亚洲精品国产一区二区精华液| 在线观看日产精品| 日本一不卡视频| 久久久久99精品一区| 99久久精品久久久久久清纯| 午夜精彩视频在线观看不卡| 精品国产一区二区三区不卡 | 色播五月激情综合网| 视频一区二区中文字幕| 久久免费国产精品| 色猫猫国产区一区二在线视频| 日韩经典中文字幕一区| 欧美激情一区二区三区蜜桃视频| 色婷婷av一区二区三区软件| 视频一区在线视频| 国产精品大尺度| 欧美大尺度电影在线| 91在线观看免费视频| 男人的j进女人的j一区| 国产精品无人区| 欧美日韩www| 不卡视频在线观看| 美女性感视频久久| 亚洲美女免费视频| 精品国产乱子伦一区| 色素色在线综合| 国内一区二区在线| 亚洲国产日产av| 国产精品三级电影| 精品免费国产一区二区三区四区| 日本韩国欧美一区| 成人av电影在线观看| 精品一区二区免费看| 亚洲mv在线观看| 亚洲人成网站在线| 国产精品久久久久久久久果冻传媒 | 伊人色综合久久天天| 中文一区二区在线观看| 精品电影一区二区| 国产精品中文字幕一区二区三区| 亚洲成人黄色小说| 亚洲综合999|