Basisversion Schritt 1: Axios konfigurierenErstellen Sie zunächst ein Service.js, das die Axios-Konfiguration und Interceptors speichert und schließlich ein Axios-Objekt exportiert. Ich verwende meist häufiger elementUI, du kannst hier aber auch deine eigene UI-Bibliothek verwenden. Axios von „Axios“ importieren importiere { Nachricht, Wird geladen } von 'element-ui' const ConfigBaseURL = 'https://localhost:3000/' //Standardpfad, Sie können auch env verwenden, um die Umgebung festzulegen let loadingInstance = null //Hier wird geladen //Verwenden Sie die Methode „create“, um eine Axios-Instanz zu erstellen. export const Service = axios.create({ Timeout: 7000, // Anforderungstimeout baseURL: ConfigBaseURL, Methode: 'post', Überschriften: { „Inhaltstyp“: „Anwendung/json;Zeichensatz=UTF-8“ } }) // Anforderungs-Interceptor hinzufügen Service.interceptors.request.use(config => { loadingInstance = Wird geladen.service({ Sperre: wahr, Text: „wird geladen …“ }) Konfiguration zurückgeben }) // Antwort-Interceptor hinzufügen Service.interceptors.response.use(response => { wird geladenInstance.schließen() // console.log(Antwort) Antwortdaten zurückgeben }, Fehler => { console.log('TCL: Fehler', Fehler) const msg = Fehler.Nachricht !== undefiniert ? Fehler.Nachricht : '' Nachricht({ Meldung: 'Netzwerkfehler' + msg, Typ: "Fehler", Dauer: 3 * 1000 }) wird geladenInstance.schließen() returniere Promise.reject(Fehler) }) Die spezifische Interceptor-Logik hängt vom jeweiligen Unternehmen ab. Ich habe hier keine Logik, ich habe nur ein globales Laden hinzugefügt. Schritt 2: Kapseln Sie die AnfrageHier erstelle ich eine weitere request.js, die die konkrete Anfrage enthält. importiere {Service} aus './Service' Exportfunktion getConfigsByProductId(productId) { return Dienst({ URL: "/manager/getConfigsByProductId", Parameter: { Produkt-ID: Produkt-ID } }) } Exportfunktion getAllAndroidPlugins() { return Dienst({ URL: "/manager/getAndroidPlugin", Methode: 'get' }) } Exportfunktion addNewAndroidPlugin(Daten) { return Service({ URL: '/manager/addAndroidPlguin', Daten: JSON.stringify(Daten) }) } Natürlich kann man die URL auch nochmal kapseln und in eine andere Datei packen. Ich halte das für sinnlos und erhöht die Komplexität zusätzlich. Das Wichtigste, worauf Sie hier achten müssen, ist das Benennungsproblem. Es wird empfohlen, es entsprechend der Funktion zu benennen. Beispielsweise verwende ich hier Anforderungsmethode + Funktion oder Inhalt + Parameter. Auf diese Weise ist auch der Name getConfigsByProductId sehr klar. Schritt 3: VerwendenIn der Vue-Komponente importiere {getAllAndroidPlugins,getConfigsByProductId,addNewAndroidPlugin} aus '@/api/request.js' getAllAndroidPlugins() .dann(res=>{ }) Globale Verwendung in main.js importiere {Service} von '@/api/Service.js' Vue.prototype.$axios=Dienst Erweiterte VersionMit dem Upgrade von vue cli wurden auch core-js\babel und andere Abhängigkeiten aktualisiert. Jetzt können Sie async/await nach Belieben verwenden. Daher dient diese Kapselung dazu, das vorherige Promise auf async await zu aktualisieren. Erstens ist es immer noch dasselbe. Kapseln Sie zuerst axios //Dienst.js Axios von „Axios“ importieren const ConfigBaseURL = 'https://localhost:3000/' //Standardpfad, Sie können auch env verwenden, um die Umgebung zu bestimmen //Verwenden Sie die Methode „create“, um eine Axios-Instanz zu erstellen export const Service = axios.create({ Timeout: 7000, // Anforderungstimeout baseURL: ConfigBaseURL, Methode: 'post', Überschriften: { „Inhaltstyp“: „Anwendung/json;Zeichensatz=UTF-8“ } }) // Anforderungs-Interceptor hinzufügen Service.interceptors.request.use(config => { Konfiguration zurückgeben }) // Antwort-Interceptor hinzufügen Service.interceptors.response.use(response => { // console.log(Antwort) Antwortdaten zurückgeben }, Fehler => { returniere Promise.reject(Fehler) }) An diesem Punkt haben Sie ein Axios-Objekt erhalten. Anschließend empfehle ich eine häufig verwendete Bibliothek, die hauptsächlich zur Behandlung asynchroner Fehler verwendet wird: await-to-js. Der Code wird von oben fortgeführt. Importieren von „await-to-js“ Exportfunktion isObj(obj) { const typeCheck = Typ von Objekt!=='undefined' und& Typ von Objekt === 'Objekt' und& Objekt !== null Rückgabewert: typeCheck && Object.keys(obj).length > 0 } asynchrone Exportfunktion _get(url, qs,headers) { Konstante Parameter = { URL (URL = URL = URL), Methode: 'get', Parameter: qs? qs: '' } if (header) { params.headers = headers } const [err, res] = warte auf (Dienst (Params)) wenn (!err && res) { Rückgabewert } anders { returniere console.log(err) } } Beim Kapseln von get müssen Sie nur die Parameter berücksichtigen, „await-to-js“ verwenden, um Fehler während des Wartens zu erfassen, Daten nur bei Erfolg zurückgeben und den Interceptor verwenden, wenn ein Fehler auftritt. asynchrone Exportfunktion _get(url, qs,headers) { Konstante Parameter = { URL (URL = URL = URL), Methode: 'get', Parameter: isObj(qs) ? qs : {} } wenn (isObj(headers)) {params.headers = headers} const [err, res] = warte auf (Dienst (Params)) wenn (!err && res) { Rückgabewert } anders { returniere console.log(err) } } Dies ist der Beitrag, den ich verpackt habe Exportiere asynchrone Funktion _post(URL, qs, Body) { Konstante Parameter = { URL (URL = URL = URL), Methode: 'post', Parameter: isObj(qs) ? qs : {}, Daten: isObj(body) ? body : {} } const [err, res] = warte auf (Dienst (Params)) wenn (!err && res) { Rückgabewert } anders { returniere console.log(err) } } Es kann bei Verwendung direkt eingeführt oder mehrfach eingekapselt werden //ein.vue <Skript> importiere{_get}von './Service' Standard exportieren{ Methoden:{ asynchroner Test () { const res = warte auf _get('http://baidu.com') } } } </Skript> Oben sind die Details mehrerer Methoden zur Vue-Kapselung von Axios aufgeführt. Weitere Informationen zur Vue-Kapselung von Axios finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Docker Swarm von der Bereitstellung bis zum grundlegenden Betrieb
>>: Centos7.5 installiert die Bereitstellung des binären Pakets mysql5.7.24
Tomcat ist eine auf Java basierende Webserversoft...
Navigation, kleine Datenmenge Tabelle, zentriert &...
So verwenden Sie den MySQL-Autorisierungsbefehl „...
Vorwort Als intensiver Benutzer von Front-End-Fra...
Problembeschreibung Wie wir alle wissen, wird bei...
Original : http://developer.yahoo.com/performance...
Inhaltsverzeichnis 1. classList-Attribut 2. Prakt...
Inhaltsverzeichnis Verwenden bedingter Typen in g...
Inhaltsverzeichnis 1. Grundtypen 2. Objekttyp 2.1...
Vorbereiten 1. Laden Sie das erforderliche Instal...
In diesem Artikel wird das kostenlose MySQL-Insta...
Inhaltsverzeichnis 1. Nutzung 1. Grundlegende Ver...
Es wird empfohlen, zunächst mit dem Befehl sudo s...
1. Installieren Sie Oracle. Im Internet gibt es z...
Ich verwende CSS schon seit langer Zeit, habe jed...