HTTP リクエスト処理の終了
HTTP リクエストを処理するときに、処理を終了してエラー応答を送信することが必要になる場合があります。 。これは、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 })
HTTP エラー コードの使用
より高度なエラー処理を行うには、適切なエラー コードを返すことをお勧めします。デフォルトの 200 OK の代わりに HTTP エラー コード。
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 形式のエラー応答
より詳細なエラー応答を 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 })
ネストされた関数からのエラーの伝播
ServeHTTP() から呼び出される関数でエラー処理が実行される場合、ServeHTTP() を終了できるようにエラー状態を返す必要があります。リクエストの処理:
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 }
以上がGo で HTTP リクエスト処理を適切に処理して終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。