Heim > Backend-Entwicklung > Golang > Wie kann man HTTP-Anfragen in Go effektiv beenden?

Wie kann man HTTP-Anfragen in Go effektiv beenden?

Susan Sarandon
Freigeben: 2024-11-25 08:18:13
Original
782 Leute haben es durchsucht

How to Effectively Terminate HTTP Requests in Go?

Beenden von HTTP-Anfragen in Go

In Go können Sie eine HTTP-Anfrage beenden, indem Sie von der ServeHTTP()-Methode eines HTTP-Handlers zurückkehren . Mit diesem Ansatz können Sie die Anfrage beenden und eine Antwort an den Kunden senden.

Beispiel:

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    // Examine incoming parameters
    if !ok {
        str := `{"Result":"","Error":"No valid Var"}`
        fmt.Fprint(w, str)
        return // Terminate the request
    }

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

Hinweise:

  • Erwägen Sie die Rückgabe eines HTTP-Fehlercodes anstelle des Standardwerts 200 OK, wenn die Eingabeparameter Ihrer API ungültig sind. Verwenden Sie zu diesem Zweck die Funktion http.Error().

Beispiel:

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    // Examine incoming parameters
    if !ok {
        http.Error(w, `Invalid input params!`, http.StatusBadRequest) 
        return // Terminate the request
    }

    // Continue normal API serving
})
Nach dem Login kopieren
  • Für mehr Kontrolle können Sie Header und festlegen JSON-Fehlerantworten zurückgeben explizit.

Beispiel:

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    // Examine incoming parameters
    if !ok {
        w.Header().Set("Content-Type", "application/json")
        w.WriteHeader(http.StatusBadRequest)
        str := `{"Result":"","Error":"No valid Var"}`
        fmt.Fprint(w, str)
        return // Terminate the request
    }

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

Fehlerfortpflanzung:

Wenn Sie außerhalb auf einen Fehler stoßen von ServeHTTP() müssen Sie diesen Fehlerstatus zurückgeben, damit ServeHTTP() den beenden kann Anfrage.

Beispiel:

type params struct {
    // Field definitions for your parameters
}

func decodeParams(r *http.Request) (*params, error) {
    p := new(params)
    // Decode parameters
    if !ok {
        return nil, errors.New("Invalid params")
    }
    return p, nil
}

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    p, err := decodeParams(r)
    if err != nil {
        http.Error(w, `Invalid input params!`, http.StatusBadRequest)
        return // Terminate the request
    }

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

Das obige ist der detaillierte Inhalt vonWie kann man HTTP-Anfragen in Go effektiv beenden?. 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