Inhaltsverzeichnis
1. Szenarioanalyse von Netzwerkanfragen
3.
2. Entführung von Netzwerkanfragen.
3. Support Anpassung Popup- und Ausblendungssteuerung des Ladefensters
4. Behandeln Sie verschiedene Netzwerkfehler
2. Code-Analyse
4. Sekundäre Kapselung
Ende
Heim WeChat-Applet Mini-Programmentwicklung Wie setzt das Miniprogramm Netzwerkanfragen um (detaillierter Prozess)

Wie setzt das Miniprogramm Netzwerkanfragen um (detaillierter Prozess)

Sep 18, 2018 pm 04:24 PM
api 网络请求

Der Inhalt dieses Artikels befasst sich mit der Umsetzung von Netzwerkanfragen (detaillierter Prozess). Freunde in Not können sich darauf beziehen.

Für kleine Programme ist die Kapselung von Netzwerkanforderungen viel leistungsfähiger als bei Android, was lobenswert ist. Offizielles Beispiel:

wx.request({
  url: 'test.php', //仅为示例,并非真实的接口地址
  data: {
     x: '' ,
     y: ''
  },  header: {    'content-type': 'application/json' // 默认值
  },
  success: function(res) {
    console.log(res.data)
  }
})
Nach dem Login kopieren

aber…aber…Das scheint sehr einfach zu sein, aber irgendetwas scheint nicht zu stimmen? Etwas stimmt nicht – zu viel Code pro Aufruf. Darüber hinaus sind die Protokolldateien von Netzwerkanfragen schwierig zu verwalten. Das ist noch ein bisschen weit von unserem idealen Ansatz entfernt.
Wie können wir also am besten darauf hoffen?

1. Der Code ist prägnant und kann mit einer Codezeile erstellt werden.
2. Einheitliche Kapselung und Verwaltung häufig verwendeter Felder. Wie Token, Versionsnummer usw.
3. Angepasste Ausnahmebehandlung. Wenn Sie nicht angemeldet sind, müssen Sie nicht jedes Mal, wenn Sie eine Schnittstelle schreiben, beurteilen, ob Sie sich anmelden, registrieren usw.

 api.request1(data, function (result) { //数据请求成功,
  },   function(error){//失败
 })
Nach dem Login kopieren

Dann basierend auf der obigen Frage. Lassen Sie es mich Schritt für Schritt analysieren.

1. Szenarioanalyse von Netzwerkanfragen

1.

Diese Situation kommt relativ selten vor. Ich bin in meinem aktuellen Projekt darauf gestoßen. Dies bedeutet wahrscheinlich, dass Administratoren andere virtuelle Benutzer unter ihrer Kontrolle betreiben können. Der Administrator generiert nach der Anmeldung ein Token. Jedes Mal, wenn ein Mitglied generiert wird, wird jedes Mal, wenn der Administrator dieses Mitglied bedient, dieses virtuelle Token verwendet , muss er immer noch seinen eigenen Token verwenden. Zu diesem Zeitpunkt ist es notwendig, den Eingang benutzerdefinierter Token zu unterstützen.

2. Entführung von Netzwerkanfragen.

In diesem Szenario gibt es zwei Hauptsituationen:

1. Wenn das Netzwerk ausfällt
2. Wenn kein Token vorhanden ist, tritt dieses Szenario hauptsächlich in der Nachbearbeitung der Anmeldung auf. Beispielsweise können Mall-Apps Einkaufswagen usw. anzeigen.

Lösung: Fehler direkt zurückgeben, diesen Netzwerkanforderungsvorgang beenden, bevor eine Netzwerkanforderung initiiert wird, und vorhergesagte fehlerhafte Netzwerkzugriffe reduzieren

3. Support Anpassung Popup- und Ausblendungssteuerung des Ladefensters

1. Popup des Ladefensters: Es gibt viele solcher Szenarien. Wenn Sie beispielsweise nach unten ziehen, um die Liste zu aktualisieren, wird das Ladefenster nicht angezeigt müssen erscheinen. Um Benutzerinformationen zu erhalten, muss jedoch
geladen werden 2. Ausblenden des Ladefensters: Dieses Szenario tritt auf, wenn eine Schnittstelle erfolgreich aufgerufen wird und dann die zweite Schnittstelle kontinuierlich aufgerufen wird. Auf diese Weise sollte das Ladefenster nach erfolgreichem Abschluss der ersten Schnittstelle nicht verschwinden, sondern nach Abschluss der letzten Schnittstelle ausgeblendet werden.

4. Behandeln Sie verschiedene Netzwerkfehler

2. Code-Analyse

/**
 * 自定义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()
      }
    }
  })
};
Nach dem Login kopieren

3.

Konfigurieren Sie

  // 全局的数据,可以提供给所有的page页面使用
  globalData: {
    token: "",
    version: "version版本号",
    releaseUrl: "正式版url",
    debugUrl: "测试版url",    debug: true   //true  debug环境,false正式环境
  },
Nach dem Login kopieren

einheitlich in app.json. Auf diese Weise müssen Sie in Zukunft nur noch den Debug-Wert ändern, wenn Sie die Netzwerkumgebung wechseln.

4. Sekundäre Kapselung

/**
 * 自定义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)
  })
}
Nach dem Login kopieren

Ende

Schließlich ist das schematische Diagramm der Anzeige des Protokolls auf der Konsole:
Wie setzt das Miniprogramm Netzwerkanfragen um (detaillierter Prozess)

Das obige ist der detaillierte Inhalt vonWie setzt das Miniprogramm Netzwerkanfragen um (detaillierter Prozess). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann ich Daten durch Aufrufen der API-Schnittstelle in einem PHP-Projekt crawlen und verarbeiten? Wie kann ich Daten durch Aufrufen der API-Schnittstelle in einem PHP-Projekt crawlen und verarbeiten? Sep 05, 2023 am 08:41 AM

Wie kann ich Daten durch Aufrufen der API-Schnittstelle in einem PHP-Projekt crawlen und verarbeiten? 1. Einführung In PHP-Projekten müssen wir häufig Daten von anderen Websites crawlen und diese Daten verarbeiten. Viele Websites bieten API-Schnittstellen, und wir können Daten durch Aufrufen dieser Schnittstellen abrufen. In diesem Artikel wird erläutert, wie Sie mit PHP die API-Schnittstelle zum Crawlen und Verarbeiten von Daten aufrufen. 2. Ermitteln Sie die URL und die Parameter der API-Schnittstelle. Bevor Sie beginnen, müssen Sie die URL der Ziel-API-Schnittstelle und die erforderlichen Parameter ermitteln.

React API Call Guide: So interagieren und übertragen Sie Daten mit der Backend-API React API Call Guide: So interagieren und übertragen Sie Daten mit der Backend-API Sep 26, 2023 am 10:19 AM

ReactAPI-Aufrufanleitung: So interagieren Sie mit der Backend-API und übertragen Daten an diese. Übersicht: In der modernen Webentwicklung ist die Interaktion mit und die Übertragung von Daten an die Backend-API eine häufige Anforderung. React bietet als beliebtes Front-End-Framework einige leistungsstarke Tools und Funktionen, um diesen Prozess zu vereinfachen. In diesem Artikel wird erläutert, wie Sie mit React die Backend-API aufrufen, einschließlich grundlegender GET- und POST-Anfragen, und es werden spezifische Codebeispiele bereitgestellt. Installieren Sie die erforderlichen Abhängigkeiten: Stellen Sie zunächst sicher, dass Axi im Projekt installiert ist

Oracle API-Nutzungshandbuch: Erkundung der Datenschnittstellentechnologie Oracle API-Nutzungshandbuch: Erkundung der Datenschnittstellentechnologie Mar 07, 2024 am 11:12 AM

Oracle ist ein weltbekannter Anbieter von Datenbankmanagementsystemen und seine API (Application Programming Interface) ist ein leistungsstarkes Tool, das Entwicklern hilft, einfach mit Oracle-Datenbanken zu interagieren und diese zu integrieren. In diesem Artikel befassen wir uns mit dem Oracle API-Nutzungsleitfaden, zeigen den Lesern, wie sie die Datenschnittstellentechnologie während des Entwicklungsprozesses nutzen können, und stellen spezifische Codebeispiele bereit. 1.Orakel

Analyse der Oracle API-Integrationsstrategie: Erreichen einer nahtlosen Kommunikation zwischen Systemen Analyse der Oracle API-Integrationsstrategie: Erreichen einer nahtlosen Kommunikation zwischen Systemen Mar 07, 2024 pm 10:09 PM

Analyse der Oracle API-Integrationsstrategie: Um eine nahtlose Kommunikation zwischen Systemen zu erreichen, sind spezifische Codebeispiele erforderlich. Im heutigen digitalen Zeitalter müssen interne Unternehmenssysteme miteinander kommunizieren und Daten austauschen, und Oracle API ist eines der wichtigen Tools, um eine nahtlose Kommunikation zu erreichen Kommunikation zwischen Systemen. Dieser Artikel beginnt mit den grundlegenden Konzepten und Prinzipien von OracleAPI, untersucht API-Integrationsstrategien und gibt schließlich spezifische Codebeispiele, um den Lesern zu helfen, OracleAPI besser zu verstehen und anzuwenden. 1. Grundlegende Oracle-API

Speichern Sie API-Daten mit Python im CSV-Format Speichern Sie API-Daten mit Python im CSV-Format Aug 31, 2023 pm 09:09 PM

In der Welt der datengesteuerten Anwendungen und Analysen spielen APIs (Application Programming Interfaces) eine entscheidende Rolle beim Abrufen von Daten aus verschiedenen Quellen. Wenn Sie mit API-Daten arbeiten, müssen Sie die Daten häufig in einem Format speichern, das leicht zugänglich und einfach zu bearbeiten ist. Ein solches Format ist CSV (Comma Separated Values), mit dem tabellarische Daten effizient organisiert und gespeichert werden können. In diesem Artikel wird der Prozess des Speicherns von API-Daten im CSV-Format mithilfe der leistungsstarken Programmiersprache Python erläutert. Indem wir die in diesem Leitfaden beschriebenen Schritte befolgen, erfahren wir, wie wir Daten aus der API abrufen, relevante Informationen extrahieren und sie zur weiteren Analyse und Verarbeitung in einer CSV-Datei speichern. Tauchen wir ein in die Welt der API-Datenverarbeitung mit Python und erschließen wir das Potenzial des CSV-Formats

So gehen Sie mit Laravel-API-Fehlerproblemen um So gehen Sie mit Laravel-API-Fehlerproblemen um Mar 06, 2024 pm 05:18 PM

Titel: Wie man mit Laravel-API-Fehlerproblemen umgeht, sind spezifische Codebeispiele erforderlich. Bei der Entwicklung von Laravel treten häufig API-Fehler auf. Diese Fehler können verschiedene Ursachen haben, z. B. Logikfehler im Programmcode, Probleme bei Datenbankabfragen oder Fehler bei externen API-Anfragen. Der Umgang mit diesen Fehlerberichten ist ein zentrales Thema. In diesem Artikel wird anhand spezifischer Codebeispiele gezeigt, wie Laravel-API-Fehlerberichte effektiv verarbeitet werden. 1. Fehlerbehandlung in Laravel

So entwickeln Sie eine einfache CRUD-API mit MongoDB So entwickeln Sie eine einfache CRUD-API mit MongoDB Sep 19, 2023 pm 12:32 PM

So verwenden Sie MongoDB zum Entwickeln einer einfachen CRUDAPI. In der modernen Webanwendungsentwicklung sind CRUD-Operationen (Hinzufügen, Löschen, Ändern, Abfragen) eine der häufigsten und wichtigsten Funktionen. In diesem Artikel stellen wir die Entwicklung einer einfachen CRUD-API mithilfe der MongoDB-Datenbank vor und stellen spezifische Codebeispiele bereit. MongoDB ist eine Open-Source-NoSQL-Datenbank, die Daten in Form von Dokumenten speichert. Im Gegensatz zu herkömmlichen relationalen Datenbanken verfügt MongoDB nicht über ein vordefiniertes Schema

RESTful API-Entwicklung mit Laravel: Aufbau moderner Webdienste RESTful API-Entwicklung mit Laravel: Aufbau moderner Webdienste Aug 13, 2023 pm 01:00 PM

RESTful API-Entwicklung mit Laravel: Aufbau moderner Webdienste Mit der rasanten Entwicklung des Internets steigt die Nachfrage nach Webdiensten von Tag zu Tag. Als moderne Webdienstarchitektur ist RESTfulAPI leichtgewichtig, flexibel und leicht erweiterbar und wird daher häufig in der Webentwicklung eingesetzt. In diesem Artikel stellen wir vor, wie Sie mit dem Laravel-Framework eine moderne RESTful-API erstellen. Laravel ist eine PHP-Sprache

See all articles