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

Detaillierte Erklärung der node.js-Installation und HbuilderX-Konfiguration

Tutorial zur npm-Installation: 1. Laden Sie das N...

Eine einfache Möglichkeit, das Passwort in MySQL 5.7 zu ändern

Dies ist ein offizieller Screenshot. Nach der Ins...

Best Practices zum Teilen von React-Code

Wenn ein Projekt eine gewisse Komplexität erreich...

WeChat-Applet implementiert Anmeldeschnittstelle

Die Anmeldeoberfläche des WeChat-Applets ist zu I...

Detaillierte Erläuterung der logischen Architektur von MySQL

1. Gesamtarchitekturdiagramm Im Vergleich zu ande...

Verständnis von Haslaylout- und BFC-Parsing

1. haslayout und bfc sind IE-spezifische und Stand...

JavaScript implementiert eine Eingabefeldkomponente

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erläuterung der JavaScript-Implementierung der Hash-Tabelle

Inhaltsverzeichnis 1. Hash-Tabellenprinzip 2. Das...

So verbinden Sie Navicat mit der Docker-Datenbank auf dem Server

Starten Sie den MySQL-Container in Docekr Verwend...

Detaillierte Erklärung der neuen Funktion ROLE in MySQL 8

Welche Probleme löst MySQL ROLE? Wenn Sie ein DBA...

MySQL stellt Daten über Binlog wieder her

Inhaltsverzeichnis MySQL-Protokolldateien binlog ...

JavaScript realisiert die Generierung und Überprüfung von Zufallscodes

Die Generierung und Überprüfung von Zufallscodes ...

Vergleich mehrerer Beispiele zur Einfügungseffizienz in MySQL

Vorwort Aus beruflichen Gründen musste ich kürzli...