Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menamatkan Permintaan HTTP dengan Berkesan dalam Go?

Bagaimana untuk Menamatkan Permintaan HTTP dengan Berkesan dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-25 08:18:13720semak imbas

How to Effectively Terminate HTTP Requests in Go?

Menamatkan Permintaan HTTP dalam Go

Dalam Go, anda boleh menamatkan permintaan HTTP dengan kembali daripada kaedah ServeHTTP() pengendali HTTP . Pendekatan ini membolehkan anda menamatkan permintaan dan menghantar respons kepada pelanggan.

Contoh:

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

Nota:

  • Pertimbangkan untuk mengembalikan kod ralat HTTP dan bukannya 200 OK lalai apabila parameter input API anda tidak sah. Gunakan fungsi http.Error() untuk tujuan ini.

Contoh:

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
})
  • Untuk lebih kawalan, anda boleh menetapkan pengepala dan kembalikan respons ralat JSON secara eksplisit.

Contoh:

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

Penyebaran Ralat:

Jika anda menghadapi ralat di luar daripada ServeHTTP(), anda mesti mengembalikan keadaan ralat itu supaya ServeHTTP() boleh menamatkan permintaan.

Contoh:

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

Atas ialah kandungan terperinci Bagaimana untuk Menamatkan Permintaan HTTP dengan Berkesan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn