Detaillierte Erläuterung der Konfigurationsmethode des Vue-Anforderungs-Interceptors

Detaillierte Erläuterung der Konfigurationsmethode des Vue-Anforderungs-Interceptors

Befolgen Sie die nachstehenden Schritte

1. Inhalt request.js : Konfiguration des HTTP-Anforderungs-Interceptors und des HTTP-Antwortserver-Antwort-Interceptors

2. http.js -Inhalt: Anforderungsdatenkapselung

3. utils.js -Inhalt: Token abrufen und feststellen, ob Token vorhanden ist

4. Datei store :

Vuex Warehouse-Konfiguration

  • Vuex-Persistenz
  • Vuex-Vorlagenreferenz

5. Schnittstellenkapselung

Inhaltsverzeichnis

request.js-Inhalt

Konfiguration http request -Anforderungs-Interceptors und http response -Antwort-Interceptors

 // HTTP-Anforderungs-Interceptor, wenn ein Token-Wert vorhanden ist, konfigurieren Sie den Token-Wert. Importieren Sie Axios von „Axios“.
Promise von 'promise' importieren
importiere util aus „./utils“;
Store aus „./../store/index“ importieren;
const service = axios.create({
    Timeout: 60000, // Anforderungs-Timeout-Header: {
        // Autorisierung: Autorisierung,
        „Inhaltstyp“: „Anwendung/json;Zeichensatz=UTF-8“
    }
});
// HTTP-Anforderungs-Interceptor service.interceptors.request.use(
    Konfiguration => {
        Verwenden Sie stattdessen tokenExist.
        wenn (TokenExist) {
            // bus.$emit('toggleloading', true) //Anzeige wird geladen
            //Wenn das Token vorhanden ist, config.headers['Authorization'] = `Bearer ${util.getToken()}`;
        }
        // Toast.laden({
        // Nachricht: „Wird geladen …“,
        // Dauer: 0,
        // forbidClick: true
        // });
        Konfiguration zurückgeben;
    },
    Fehler => {
        Versprechen.Ablehnen(Fehler);
    }
)
// HTTP-Antwortserver-Antwort-Interceptor,
//Fangen Sie hier 401-Fehler ab und springen Sie zurück zur Anmeldeseite, um das Token erneut abzurufen.
Dienst.Interceptors.Antwort.Verwendung(
    Antwort => {
        wenn (Antwort.Status === 200) {
            //Kommunikation erfolgreich// Toast.clear();
            /****************
             * response.data.status === 0 Fehler* response.data.status === 100 Erfolg* response.data.status === 401 Token abgelaufen*
             * *************/
            // bus.$emit('toggleloading', false) // Laden ausblenden
            wenn (Antwort.Daten.Status === 401) {
                //Wenn das Token abgelaufen ist, springe zum Login. Message.error("Login ist abgelaufen, bitte erneut anmelden!");
                store.commit('SET_TOKEN', '');
                util.goLogin();
            } sonst wenn (Antwort.Daten.Zustand === 0) {
                // Nachricht.Fehler(Antwort.Daten.Nachricht);
                Antwortdaten zurückgeben;
            } anders {
                Antwortdaten zurückgeben;
            }
        }
    },
    Fehler => {
        //Anfrage fehlgeschlagen//;
        const Antwort = Fehler.Antwort;
        wenn (Antwort.Status === 401) {
            // Toast.fail(Antwort.Daten.Nachricht);
            Message.error("Login ist abgelaufen, bitte erneut anmelden!");
            util.goLogin();
        } sonst wenn (Antwort.status === 403) {
            $router.push({
                Name: '403'
            });
        } anders {
            // Toast.fail(response.data.message ? response.data.message : 'Systemfehler, bitte kontaktieren Sie den Administrator');
            // Nachricht.Fehler({
            //Meldung: „Kein Dienst, bitte kontaktieren Sie den Administrator“
            // });
        }
        returniere Promise.reject(Fehler);
    }
);
Standarddienst exportieren;

http.js-Inhalt

Datenanforderungsmethode

 Anfrage aus „./request“ importieren;
// Store aus „./../store/index“ importieren;
const http = {
    Anfrage(Konfiguration) {
        Anfrage(Konfiguration);
    },
    post(URL, Daten) {
        // wenn (Dateninstanz des Objekts) {
        // }anders{
        // Daten = {
        // ...Daten
        // };
        // }
        Rückgabeanforderung({
            URL (URL = URL = URL),
            Methode: 'post',
            Daten
        });
    },
    postFile(url, daten, inhaltstyp) {
        Rückgabeanforderung({
            URL (URL = URL = URL),
            Methode: 'post',
            Daten,
            Inhaltstyp
        });
    },
    get(url, params) {
        Rückgabeanforderung({
            URL (URL = URL = URL),
            Methode: 'get',
            Parameter
        });
    },
    setze(URL, Daten) {
        Rückgabeanforderung({
            URL (URL = URL ...
            Methode: 'put',
            Daten
        });
    },
    löschen(URL) {
        Rückgabeanforderung({
            URL (URL = URL = URL),
            Methode: 'löschen'
        });
    },
    herunterladen(URL, Parameter) {
        Rückgabeanforderung({
            URL (URL = URL = URL),
            Methode: 'get',
            Parameter,
            Antworttyp: „Blob“
        });
    },
    downloadPost(url, daten) {
        Rückgabeanforderung({
            URL (URL = URL = URL),
            Methode: 'post',
            Daten,
            Antworttyp: „Blob“
        });
    }
};
Standard-HTTP exportieren;

utils.js-Inhalt

Holen Sie sich das Token und bestimmen Sie, ob das Token vorhanden ist

 Store aus „../store/index“ importieren;
lass util = {
    //Token abrufen
    getToken() {
        gibt store.getters.token zurück;
    },
    //Beurteilen, ob das Token existiert tokenExist() {
        lass Flagge;
        sei Token = store.getters.token;
        wenn (Token && Token !== '') {
            Flagge = wahr;
        } anders {
            Flagge = falsch;
        }
        Token zurückgeben;
    },
}
Standard-Dienstprogramm exportieren 

Vuex Warehouse-Konfiguration

  • Vuex-Persistenz
  • Vuex-Vorlagenreferenz

index.js-Inhalt

 Vue von „vue“ importieren
Vuex von „vuex“ importieren
importiere VuexPersistence von „vuex-persist“;
importiere db aus './db'
Vue.Verwenden(Vuex)
//Vuex-Statuspersistenz const vuexLocal = new VuexPersistence({
    Speicher:window.localStorage
})
const store = neuer Vuex.Store({
    Zustand:{},
    Mutationen:{},
    Aktionen:{},
    Module: {
        db
    },
    Plugins: [vuexLocal.plugin]
})
Standardspeicher exportieren

db.js-Inhalt

 Konstante db = {
    Zustand: {
        Token: '',
    },
    Getter: {
        token:status => status.token
    },
    Mutationen:
        //Token speichern
        setToken: (Status, Wert) => {
            Status.Token = Wert
        }
    },
    Aktionen: {}
}
Standard-DB exportieren

Schnittstellenkapselung

 importiere http von "../common/http"
/***********Anmelden und registrieren*************/
//Schnittstellenfunktion testen text(params){
    gibt http.get("api/Test/GetList", Parameter) zurück
}
//Anmelden Funktion Login(params) {
    gibt http.post("api/Login/Login", Parameter) zurück
}
// Hol dir den grafischen Verifizierungscode function GetValidateCode(params) {
    gibt http.post zurück("api/Login/GetValidateCode", Parameter)
}
// Holen Sie sich den Telefonbestätigungscode. Hinweis: Sie müssen die Mensch-Maschine-Verifizierung im Voraus überprüfen, sonst besteht die Gefahr, dass Sie böswillig per SMS gestohlen werden. Funktion GetPhoneCode (Params) {
    gibt http.post("api/Login/GetPhoneCode", Parameter) zurück
}
//Informationen zur Registrierungsüberprüfung Funktion RegisterUserVerify(params) {
    return http.post("api/Login/RegisterUserVerify", Parameter)
}
// Registrieren, Passwort festlegen und Benutzerinformationen registrieren Funktion RegisterUserInfo(params) {
    gibt http.post("api/Login/RegisterUserInfo", Parameter) zurück
}
// Kennwort vergessen - Bestätigungsname und Telefonnummer - Funktion ResetPasswordVerify(params) {
    return http.post("api/Login/ResetPasswordVerify", Parameter)
}
// Passwort vergessen Passwort-Update-Funktion ResetPassWord(params) {
    gibt http.post zurück("api/Login/ResetPassWord", Parameter)
}
exportieren {
    Login,
    Text,
    GetPhoneCode,
    RegisterUserVerify,
    GetValidateCode,
    Passwort zurücksetzenVerify,
    Passwort zurücksetzen,
    RegisterUserInfo
}

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können!

Das könnte Sie auch interessieren:
  • Vue fügt die Nutzung von Anforderungs-Interceptor und Vue-Ressourcen-Interceptor hinzu
  • Vue Axios-Anmeldeanforderungs-Interceptor
  • Zusammenfassung der Wissenspunkte des Vue-Routing-Interceptors und des Request-Interceptors
  • Schritte für Vue zum Kapseln von Axios-Anfragen und -Interceptors
  • Der Vue Axios Interceptor verwendet häufig die wiederholte Stornierung von Anforderungen

<<:  Sieben verschiedene Farbschemata für das Website-Design-Erlebnis

>>:  Zusammenfassung der MySQL-Verbundindizes

Artikel empfehlen

Detaillierte Erläuterung des Garbage Collection-Mechanismus von JavaScript

Inhaltsverzeichnis Warum brauchen wir Garbage Col...

Drei gängige Methoden, um HTML-Seiten nach 3 Sekunden automatisch zu springen

In der Praxis stoßen wir häufig auf ein Problem: ...

Detaillierte Erklärung der Standardwerte von Breite und Höhe in CSS: auto und %

abschließend % der Breite: definiert die prozentu...

Webdesign muss Zweck, Ideen, Gedanken und Beständigkeit haben

<br />Einleitung: Diese Idee kam mir, als ic...

Verwenden des radialen Farbverlaufs in CSS zum Erzielen eines Karteneffekts

Vor einigen Tagen erhielt eine Kollegin ein Punkt...

Vue implementiert rekursiv benutzerdefinierte Baumkomponenten

In diesem Artikel wird der spezifische Code der r...

jQuery-Plugin zur Implementierung des Dashboards

Das jQuery-Plug-In implementiert das Dashboard zu...

So berechnen Sie mit Linux den von zeitgesteuerten Dateien belegten Speicherplatz

Öffnen Sie den Editor für geplante Aufgaben. Cent...

Lösung für mobile Browser, die die Position nicht unterstützen: Fix

Die konkrete Methode ist wie folgt: CSS Code Code...

Umfassendes Verständnis von HTML-Formularelementen

Wie unten dargestellt: XML/HTML-CodeInhalt in die...

So verwenden Sie einen Docker-Container für den Zugriff auf das Host-Netzwerk

Vor Kurzem wurde ein System bereitgestellt, das n...