Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyesuaikan Pengendalian Ralat HTTP 404 dalam Go dengan HTTProuter?

Bagaimana untuk Menyesuaikan Pengendalian Ralat HTTP 404 dalam Go dengan HTTProuter?

Susan Sarandon
Susan Sarandonasal
2024-10-26 13:56:31474semak imbas

How to Customize HTTP 404 Error Handling in Go with HTTProuter?

Menyesuaikan Pengendalian HTTP 404 dengan HTTProuter

HTTProuter menyediakan keupayaan untuk mengendalikan respons 404 secara manual. Untuk mencapai matlamat ini, fungsi pengendali tersuai mesti ditakrifkan.

Struktur Penghala HTTProuter mempunyai medan NotFound jenis http.Handler. Antara muka http.Handler mentakrifkan satu kaedah, ServeHTTP(ResponseWriter, *Request). Oleh itu, pengendali tersuai mesti melaksanakan fungsi ini.

Untuk mencipta pengendali tersuai, takrifkan fungsi dengan fungsi tandatangan(http.ResponseWriter, *http.Request). Tukar fungsi ini kepada nilai http.Handler menggunakan fungsi pembantu http.HandlerFunc(). Contohnya:

<code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "text/plain; charset=utf-8")
    w.WriteHeader(http.StatusNotFound) // Set status to 404
    w.Write([]byte("My NotFound handler"))
}

router.NotFound = http.HandlerFunc(MyNotFound)</code>

Pengendali tersuai ini akan dicetuskan oleh HTTProuter. Sebagai alternatif, ia boleh digunakan secara manual daripada pengendali lain dengan menghantar ResponseWriter dan *Permintaan contoh:

<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) {
    if ... { // Check for resource availability
        router.NotFound(w, r)
        return
    }
    // ... Serve the resource
}</code>

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Pengendalian Ralat HTTP 404 dalam Go dengan HTTProuter?. 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