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
Vorwort Bevor wir über den Deckungsindex sprechen...
<meta http-equiv="X-UA-kompatibel" c...
Ich bin heute bei der Arbeit auf ein SQL-Problem ...
Heute werde ich Sie durch die Geschichte von ext4...
Es ist ganz einfach, Nachrichten an andere Benutz...
Nginx mit Docker bereitstellen, so einfach ist da...
Anwendungsszenario Am Beispiel des Hintergrundver...
1. Link zum Attribut (1) Platzieren Sie den Routi...
Inhaltsverzeichnis 1. Einleitung 2. Beschreibung ...
Bei Verwendung des Tags <html:reset> stellen...
Das Document Object Model (DOM) ist eine Plattfor...
1. Langsame Abfrage aufgrund fehlenden oder ungül...
In diesem Artikel wird der spezifische Code des n...
Inhaltsverzeichnis 1. Grundlegende Konfiguration ...
Ich habe vor Kurzem Front-End- und Back-End-Techn...