Maison >développement back-end >Golang >Comment terminer efficacement les requêtes HTTP dans Go ?

Comment terminer efficacement les requêtes HTTP dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-25 08:18:13801parcourir

How to Effectively Terminate HTTP Requests in Go?

Terminer les requêtes HTTP dans Go

Dans Go, vous pouvez terminer une requête HTTP en revenant de la méthode ServeHTTP() d'un gestionnaire HTTP . Cette approche permet de mettre fin à la demande et d'envoyer une réponse au client.

Exemple :

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

Remarques :

  • Pensez à renvoyer un code d'erreur HTTP au lieu du 200 OK par défaut lorsque les paramètres d'entrée de votre API ne sont pas valides. Utilisez la fonction http.Error() à cet effet.

Exemple :

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
})
  • Pour plus de contrôle, vous pouvez définir des en-têtes et renvoyer les réponses d'erreur JSON explicitement.

Exemple :

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

Propagation des erreurs :

Si vous rencontrez une erreur à l'extérieur de ServeHTTP(), vous devez renvoyer cet état d'erreur pour que ServeHTTP() puisse terminer le demande.

Exemple :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn