Heim  >  Artikel  >  Web-Frontend  >  Arbeiten mit HTTP-Anfragen in Spring Boot

Arbeiten mit HTTP-Anfragen in Spring Boot

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-06 22:37:02266Durchsuche

Working with HTTP requests in Spring Boot

Hallo Welt!
Das Hauptziel dieses Artikels besteht darin, Anfängerentwicklern bei der Verarbeitung von HTTP-Anfragen in Spring Boot zu helfen.

?In den Beispielen behandle ich nicht den gesamten Code, der für die MVC-App erforderlich ist, sondern nur einige Teile, um den Unterschied in der Datenverarbeitung zu veranschaulichen.

Kürzlich habe ich mit anderen Schülern meiner Klasse an einem Ingenieurprojekt gearbeitet. Es führte uns in einen neuen Technologie-Stack ein, da wir auf einer „alten“ Codebasis aufbauen mussten. Die Codebasis umfasste Java, Spring Boot und Thymeleaf. Ziel des Projekts war es, einen Klon eines beliebten sozialen Netzwerks zu erstellen.
Die Kernfunktionalität war ziemlich typisch: Benutzer können Beiträge erstellen und andere können diese Beiträge kommentieren oder liken.
Um etwas visuelle Dynamik hinzuzufügen, haben wir uns entschieden, Thymeleaf mit JavaScript zu kombinieren. Wenn ein Beitrag auf der Seite angezeigt wird, können Benutzer auf diese Weise klicken, um ihn zu liken oder zu kommentieren, und die Änderungen werden im Backend verarbeitet. Zu diesem Zeitpunkt benötigten wir eine JavaScript-Funktion, um Anfragen für alle Standard-CRUD-Operationen an den Server zu senden.
Die Frage war: Wie übergeben wir Daten ordnungsgemäß mit den Methoden POST, PUT oder DELETE an den Server? GET ist mehr oder weniger klar, daher überspringe ich Beispiele mit GET.
Hier sind die möglichen Wege.

URL-Parameter (PathVariable)

URL-Beispiel: HTTP://myapp.com/posts/1

Geeignet für: DELETE, PUT

Fälle:Sie arbeiten mit einer bestimmten Entität an einem Backend – in meinen Beispielen ein einzelner Beitrag.

Anmerkungsbeispiel:


@DeleteMapping("/posts/{post_id}")
public ResponseEntity<String> deletePost(@PathVariable("post_id") Long post_id) {
        // Some logic here...
        return ResponseEntity.ok("Deleted successfully");
    }


Beispiel für einen entsprechenden JS-Code:


 // Some pre-logic here to pass postId to the function, 
// or you can use const deletePost = async(postId)=>{} to pass postId directly
const deletePost = async () => {
    // Some pre-checks and error handling go here...
    const requestOption = {
        method:'DELETE',
        headers:{
            'Content-type':'application/json'
        }
    };
    await fetch(`/posts/${postId}`, requestOptions);
    // Some post-checks and error handling go here...
}


Formulardaten (RequestParam)

URL-Beispiel: HTTP://myapp.com/posts oder HTTP://myapp.com/posts/1 zur Bearbeitung

Geeignet für:PUT, POST

Fälle: Sie erstellen oder aktualisieren eine Entität mit einem oder zwei Parametern. In meinem Beispiel handelt es sich um einen Beitragsinhalt (eine Textnachricht).

Anmerkungsbeispiel:


@PutMapping("/posts/{post_id}")
    public ResponseEntity<String> editPost(@PathVariable("post_id") Long post_id, @RequestParam("content") String content) {
        // Some logic goes here...
        return ResponseEntity.ok("Post updated successfully");
    }


Beispiel eines entsprechenden JS-Codes:


// Some pre-logic here to pass postId and content to the function, 
// or you can use const deletePost = async(postId, updatedContent)=>{} to pass 
// them directly directly
const updatePost = async ()=> {
    // Some pre-checks and error handling go here...
    const formData = new FormData();
    formData.append("content",updatedContent);
    requestOptions = {
        method:'PUT',
        body: formData
    };
    await fetch(`/posts/${postId}`,requestOptions);
    // Some post-checks and error handling go here...
}


JSON-Körper (RequestBody)

Geeignet für:PUT, POST

Fälle: Sie erstellen oder aktualisieren eine komplexe Entität (z. B. ein Objekt mit 3 oder mehr Parametern).

Anmerkungsbeispiel:


@PutMapping("/posts/{post_id}")
    public ResponseEntity<String> editPost(@PathVariable("post_id") Long post_id, @RequestBody Post post) {
        // Some logic goes here...
        // It requires the whole object to be passed. 
        // After that it's possible to access values via getters of your object's model
        return ResponseEntity.ok("Post updated successfully");
    }


Beispiel für einen entsprechenden JS-Code:


const updatePost = async ()=> {
    // Some pre-checks and error handling go here...
    requestOptions = {
        method:'PUT',
        headers: {
            'Content-type':'application/json'
        },
        body: JSON.stringify({'content':updatedContent})
    };
    await fetch(`/posts/${postId}`,requestOptions);
    // Some post-checks and error handling go here...
}


Das ist es. Ich hoffe, es wird hilfreich sein.
Prost!

Das obige ist der detaillierte Inhalt vonArbeiten mit HTTP-Anfragen in Spring Boot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn