Wie kann die Verarbeitung von HTTP-Anfragen in Go ordnungsgemäß gehandhabt und beendet werden?

Patricia Arquette
Freigeben: 2024-11-20 19:05:17
Original
753 Leute haben es durchsucht

How to Gracefully Handle and Terminate HTTP Request Processing in Go?

Beenden der Verarbeitung von HTTP-Anfragen

Bei der Bereitstellung von HTTP-Anfragen kann es Situationen geben, in denen es notwendig wird, die Verarbeitung zu beenden und eine Fehlerantwort zu senden . Dies kann durch die Rückkehr von der ServeHTTP()-Methode erreicht werden.

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    // Inspect incoming parameters
    if !IsValid(r.URL.Query()) {
        str := `{"Result":"","Error":"Invalid Parameters"}`
        fmt.Fprint(w, str)
        return
    }

    // Continue normal API processing
})
Nach dem Login kopieren

Verwendung von HTTP-Fehlercodes

Für eine komplexere Fehlerbehandlung wird empfohlen, eine entsprechende zurückzugeben HTTP-Fehlercode anstelle des Standardwerts 200 OK.

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    // Inspect incoming parameters
    if !IsValid(r.URL.Query()) {
        http.Error(w, "Invalid Parameters", http.StatusBadRequest)
        return
    }

    // Continue normal API processing
})
Nach dem Login kopieren

JSON-formatierte Fehlerantworten

Um eine detailliertere Fehlerantwort im JSON-Format bereitzustellen:

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    // Inspect incoming parameters
    if !IsValid(r.URL.Query()) {
        w.Header().Set("Content-Type", "application/json")
        w.WriteHeader(http.StatusBadRequest)
        str := `{"Result":"","Error":"Invalid Parameters"}`
        fmt.Fprint(w, str)
        return
    }

    // Continue normal API processing
})
Nach dem Login kopieren

Fehler aus verschachtelten Funktionen weitergeben

Wenn eine Fehlerbehandlung in einer von ServeHTTP() aufgerufenen Funktion durchgeführt wird, muss der Fehlerstatus zurückgegeben werden, damit ServeHTTP() beendet werden kann die Anfragebearbeitung:

func decodeParams(r *http.Request) (*params, error) {
    p := new(params)
    // Decode parameters and check their validity

    if !ok {
        return nil, errors.New("Invalid Parameters")
    }

    return p, nil
}

func handleRequest(w http.ResponseWriter, r *http.Request) {
    p, err := decodeParams(r)
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }

    // Continue normal API processing
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann die Verarbeitung von HTTP-Anfragen in Go ordnungsgemäß gehandhabt und beendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage