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 })
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 })
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 })
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 }
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!