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
Libérer: 2024-11-25 08:18:13
original
743 Les gens l'ont consulté

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
})
Copier après la connexion

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
})
Copier après la connexion
  • 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
})
Copier après la connexion

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
})
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal