Detaillierter Prozessbericht der Vue2-Initiierungsanfragen mit Axios

Detaillierter Prozessbericht der Vue2-Initiierungsanfragen mit Axios

Vorwort

Wenn Sie diesen Artikel lesen, wissen Sie hoffentlich bereits, was domänenübergreifende Anfragen sind und wie man sie behandelt. Dieser Artikel wird nicht ins Detail gehen.

Der Hintergrund dieses Artikels basiert auf Springboot2.3. Im Controller wird keine Geschäftslogik geschrieben und er wird nur zum Front-End-Debuggen verwendet.

Der im Controller verwendete R.success ist eine von mir gekapselte Tool-Klasse. Der Code befindet sich am Ende des Artikels.

Axios-Installation und -Konfiguration

Führen Sie den Befehl im Projektverzeichnis aus, um Axios zu installieren

npm install -S axios

Öffnen Sie die Datei main.js im src-Pfad, fügen Sie die Axios-Abhängigkeit in die Datei ein und mounten Sie sie in die globale Vue-Eigenschaft

// Referenziere Axios-Abhängigkeit importiere Axios von „Axios“

//Hängen Sie es in Vue auf, hier mounten wir Axios als Anfrage und wir können this.request verwenden, um Axios in der Komponente Vue.prototype.request = Axios aufzurufen;

Die GET-Anfrage wird durch den Aufruf der get-Methode in axios eingeleitet. Klicken Sie darauf und Sie sehen, dass die Methode zwei Objekte empfängt, url und config.

Initiieren Sie eine einfache GET-Anfrage

@RestController
@RequestMapping("/Benutzer")
öffentliche Klasse UserController {
    @GetMapping("/Liste")
    öffentliche R-Liste() {
        return R.success("Benutzerlistenabfrage erfolgreich!");
    }
}
<Vorlage>
    <div id="index">
        <button @click="selectList">Benutzer abfragen</button>
    </div>
</Vorlage>
<Skript>
Standard exportieren {
    Name: "Index",
    Methoden: {
        Auswahlliste() {
            // Eine einfache GET-Anfrage kann implementiert werden, indem man einfach die URL this.request.get("http://localhost:8000/user/list").then(res => { übergibt.
                Konsole.log("res", res);
            }).catch(e => {
                console.log("e", e);
            })
        }
    }
}
</Skript>
<Stil></Stil> 

Initiieren Sie eine einfache GET-Anfrage und übergeben Sie Parameter

@RestController
@RequestMapping("/Benutzer")
öffentliche Klasse UserController {
    @GetMapping("/get")
    öffentliche R get(String id) {
        return R.success("Benutzerakquise erfolgreich!");
    }
}
wähleEines() {
    let konfiguration = {
        Parameter: {id: "1"}
    }
    // Auf die URL folgt das Konfigurationsobjekt. Das Params-Attribut im Konfigurationsobjekt entspricht den Anforderungsparametern this.request.get("http://localhost:8000/user/get", config).then(res => {
        Konsole.log("res", res);
    }).catch(e => {
        console.log("e", e);
    })
},

Eine POST-Anfrage stellen

Die POST-Anforderung wird von der Post-Methode in Axios aufgerufen. Klicken Sie darauf und Sie können sehen, dass die Parameterliste dieser Methode drei Objekte enthält.

Initiieren Sie eine einfache POST-Anfrage

@RestController
@RequestMapping("/Benutzer")
öffentliche Klasse UserController {
    @PostMapping("/speichern")
    öffentliche R speichern() {
        return R.success("Benutzer erfolgreich hinzugefügt!");
    }
}
speichern() {
    // Das Senden einer einfachen POST-Anfrage ähnelt einer einfachen GET-Anfrage. Sie müssen lediglich die Get-Methode in die Post-Methode this.request.post("http://localhost:8000/user/save").then(res => { ändern.
        Konsole.log("res", res);
    }).catch(e => {
        console.log("e", e);
    })
}, 

Initiieren Sie eine POST-Anfrage und übergeben Sie Parameter (I)

@RestController
@RequestMapping("/Benutzer")
öffentliche Klasse UserController {
    /**
     * Im Allgemeinen werden beim Initiieren einer POST-Anforderung die Parameter in den Anforderungstext eingefügt und dann über @RequestBody analysiert. * Ich werde hier keine Entitätsklasse erstellen, sondern direkt die Map-Sammlung verwenden, um sie zu empfangen. */
    @PostMapping("/speichern")
    öffentliche R speichern(@RequestBody Map<String, String> data) {
        return R.success("Benutzer erfolgreich hinzugefügt!")
                .setAttribute("name", data.get("benutzername"))
                .setAttribute("pwd", data.get("Passwort"));
    }
}
speichern() {
    lass Daten = {
        Benutzername: „Java-Grundschüler丶“,
        Passwort: "123456789"
    }
    // Wenn Sie die Parameterliste sehen, sollten Sie es erraten können. Setzen Sie einfach das Objekt in den zweiten Parameter. // Beachten Sie, dass die von dieser Methode übertragenen Parameter im Anforderungstext this.request.post("http://localhost:8000/user/save", data).then(res => {
        Konsole.log("res", res);
    }).catch(e => {
        console.log("e", e);
    })
},

Eine POST-Anfrage initiieren und Parameter mitführen (Teil 2)

Wie oben erwähnt, werden die direkt mithilfe von Daten übergebenen Parameter in den Anforderungstext eingefügt, und das Backend muss @RequestBody verwenden, um sie abzurufen. Hier werden die Parameter zur Übermittlung in Pfadparameter geändert.

@RestController
@RequestMapping("/Benutzer")
öffentliche Klasse UserController {
    @PostMapping("/speichern")
    public R save(String Benutzername, String Passwort) {
        return R.success("Benutzer erfolgreich hinzugefügt!")
                .setAttribute("name", Benutzername)
                .setAttribute("pwd", Passwort);
    }
}
speichern() {
    let konfiguration = {
        Parameter: {
            Benutzername: „Java-Grundschüler丶“,
            Passwort: "123456789"
        }
    }
    // Daten werden hier nicht verwendet, stattdessen wird die Konfiguration zur Parameterübergabe verwendet oder das Objekt wird als Parameter zur Übergabe gekapselt this.request.post("http://localhost:8000/user/save", null, config).then(res => {
        Konsole.log("res", res);
    }).catch(e => {
        console.log("e", e);
    })
},

Dateitest hochladen

Neben GET- und POST-Anfragen gibt es auch PUT-, DELETE- und andere Arten von Anfragen. Ich werde sie hier nicht einzeln testen. Lernen wir etwas über das Hochladen von Dateien.

@RestController
@RequestMapping("/Benutzer")
öffentliche Klasse UserController {
    @PostMapping("/hochladen")
    öffentlicher R-Upload (MultipartFile-Datei, String-Dateiname) {
        // Das Dateiobjekt ist die empfangene Datei und die Verarbeitungslogik für die Datei wird ausgelassen …
        return R.success("Dateiupload erfolgreich!")
                .setAttribute("Dateiname", Dateiname);
    }
<Vorlage>
    <div id="index">
        <!-- input:file wird verwendet, um eine Datei auszuwählen. Nach der Auswahl einer Datei wird das Änderungsereignis ausgelöst, um die Methode fileChange aufzurufen-->
        <input type="file" id="file" @change="fileChange" />
        <!-- Methode zum Hochladen von Dateien ausführen-->
        <button @click="upload">Zum Hochladen klicken</button>
    </div>
</Vorlage>

<Skript>
Standard exportieren {
    Name: "Index",
    Daten() {
        zurückkehren {
            Datei: null
        }
    },
    Methoden: {
        Dateiänderung(Ereignis) {
            // Diese Methode wird ausgelöst, wenn eine Datei ausgewählt wird, und das Dateiobjekt wird in der Datei this.file = event.target.files[0] gespeichert.
        },
        hochladen() {
            // Erstellen Sie ein FormData-Objekt, legen Sie die Datei darin ab. Sie können auch einige andere Parameter eingeben. let data = new FormData();
            data.append('Datei', diese.Datei);
            data.append('Dateiname', "11223344.txt");
            // Erstellen Sie ein Konfigurationsobjekt und setzen Sie den Anforderungsheadertyp auf multipart/form-data
            let konfiguration = {
                Überschriften: {'Inhaltstyp': 'multipart/form-data'}
            }
            // Initiiere eine Anfrage mit dem gerade erstellten Objekt this.request.post('http://localhost:8000/user/upload', data, config).then(res => {
                Konsole.log("res", res);
            })
        }
    }
}
</Skript> 

Axios-Konfigurationskonfiguration

Durch Beobachtung können wir feststellen, dass Axios-Anfragen ein Konfigurationsobjekt erhalten. Die detaillierten Informationen zur Konfiguration können in node_modules/axios/index.d.ts angezeigt werden:

Es gibt viele Konfigurationselemente. Ich bin auch ein Neuling und habe viele davon noch nicht berührt. Hier werde ich einfach ein paar andere testen und sie jederzeit überprüfen. Ich empfehle die chinesische Website von Axios

Basis-URL

baseURL ist ein häufig verwendetes Attribut, mit dem die Stammadresse für jede Anforderung festgelegt werden kann. Bei einer Anforderung müssen wir nur auf den Anforderungspfad achten.

<Skript>
Standard exportieren {
    Name: "Index",
    Daten() {
        zurückkehren {
            Konfiguration: {
                Basis-URL: "http://localhost:8000"
            }
        }
    },
    Methoden: {
        prüfen() {
            let data = {name: "Java-Grundschüler"};
            this.request.post("/user/speichern", data, this.config).then(res => {
                Konsole.log("res", res);
            });
        },
    }
}
</Skript>

Time-out

Timeout ist auch ein häufig verwendetes Konfigurationselement. Es wird verwendet, um das Anforderungstimeout in Millisekunden zu konfigurieren. Wenn Sie es auf 0 setzen, bedeutet dies, dass kein Timeout festgelegt ist.

<Skript>
Standard exportieren {
    Name: "Index",
    Daten() {
        zurückkehren {
            Konfiguration: {
                Basis-URL: "http://localhost:8000",
                Zeitüberschreitung: 5000
            }
        }
    },
    Methoden: {
        prüfen() {
            let data = {name: "Zhang Hanzhe"};
            this.request.post("/user/speichern", data, this.config).then(res => {
                Konsole.log("res", res);
            });
        },
    }
}
</Skript> 

mit Anmeldeinformationen

Dieses Attribut wird auch häufig verwendet. Der Wert von withCredentials ist vom Typ bool und wird verwendet, um festzulegen, ob Cookies zugelassen werden. Axios-Anfragen lassen standardmäßig keine Cookies zu. Sie können die Sitzungs-ID zum Testen über den Controller ausdrucken.

<Skript>
Standard exportieren {
    Name: "Index",
    Daten() {
        zurückkehren {
            Konfiguration: {
                Basis-URL: "http://localhost:8000",
                // Erfordert die Zusammenarbeit des Servers mit Credentials: true,
                Zeitüberschreitung: 5000
            }
        }
    },
    Methoden: {
        prüfen() {
            let data = {name: "Java-Grundschüler"};
            this.request.post("/user/speichern", data, this.config).then(res => {
                Konsole.log("res", res);
            });
        },
    }
}
</Skript> 

Axios wird hier vorerst geschrieben. Es ist grundsätzlich kein Problem, diese täglichen Entwicklungen zu verstehen. Nachdem Sie mit der Konfiguration vertraut sind, können Sie versuchen, eine Tool-Klasse zu kapseln

Zusammenfassen

Dies ist das Ende dieses Artikels über die Verwendung von Axios durch Vue2 zum Initiieren von Anfragen. Weitere relevante Inhalte über die Verwendung von Axios durch Vue2 zum Initiieren von Anfragen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem der Verwendung von Axios-HTTP-Anfragen in vue2
  • So verwenden Sie Axios, um domänenübergreifende Anfragen in vue2.0 proxyTable zu stellen
  • Korrekte Handhabung des Vue Axios-Anforderungstimeouts
  • Vue Axios synchrone Anforderungslösung
  • Detaillierte Erklärung zur Verwendung von Axios für Ajax-Anfragen in Vue
  • vue+axios globaler Vorgang zum Hinzufügen von Anforderungsheadern und Parametern

<<:  Tiefgreifendes Verständnis der angegebenen IE-Browser-Rendering-Methode

>>:  Detaillierter Prozess zur Konfiguration von NIS in Centos7

Artikel empfehlen

Detaillierter Prozess der SpringBoot-Integration von Docker

Inhaltsverzeichnis 1. Demo-Projekt 1.1 Schnittste...

Verwenden Sie Docker, um den Kong-Clusterbetrieb aufzubauen

Es ist sehr einfach, einen Kong-Cluster unter dem...

Detaillierte Erklärung der Routenkonfiguration von Vue-Router

Inhaltsverzeichnis einführen Objektattribute in R...

jQuery realisiert den Gleiteffekt des Dropdown-Menüs

Wenn wir eine Webseite erstellen, möchten wir man...

Zusammenfassung der Möglichkeiten zur Implementierung von Single Sign-On in Vue

Das Projekt wurde vor Kurzem ausgesetzt und die U...

So wandeln Sie lokale Variablen in JavaScript in globale Variablen um

Zuerst müssen wir den Selbstaufruf der Funktion k...

Einfacher CSS-Textanimationseffekt

Ergebnisse erzielen Implementierungscode html <...

Inaktive Benutzer nach einem Login-Timeout in Linux automatisch abmelden

Methode 1: Ändern Sie die Datei .bashrc oder .bas...

Einführung in Fork in Multithreading unter Linux

Inhaltsverzeichnis Frage: Fall (1) Fork vor dem E...

Implementierung der Docker-Bereitstellung eines MySQL-Clusters

Nachteile einer Single-Node-Datenbank Große Inter...