ホームページ > バックエンド開発 > Golang > Go で HTTP リクエスト処理を適切に処理して終了するにはどうすればよいですか?

Go で HTTP リクエスト処理を適切に処理して終了するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-20 19:05:17
オリジナル
845 人が閲覧しました

How to Gracefully Handle and Terminate HTTP Request Processing in Go?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート