Terminer le traitement des requêtes HTTP
Lors du traitement des requêtes HTTP, il peut y avoir des scénarios dans lesquels il devient nécessaire de mettre fin au traitement et d'envoyer une réponse d'erreur . Ceci peut être réalisé en revenant de la méthode ServeHTTP().
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 })
Utilisation des codes d'erreur HTTP
Pour une gestion des erreurs plus sophistiquée, il est recommandé de renvoyer un Code d'erreur HTTP au lieu du 200 OK par défaut.
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 })
Réponses d'erreur au format JSON
Pour fournir une réponse d'erreur plus détaillée au format JSON :
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 })
Propagation des erreurs à partir de fonctions imbriquées
Si la gestion des erreurs est effectuée dans une fonction appelée depuis ServeHTTP(), l'état d'erreur doit être renvoyé pour permettre à ServeHTTP() de se terminer le traitement de la demande :
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 }
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!