Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyesuaikan Pengendalian Ralat 404 dalam httprouter dengan Pengendali Tersuai?

Bagaimana untuk Menyesuaikan Pengendalian Ralat 404 dalam httprouter dengan Pengendali Tersuai?

Susan Sarandon
Susan Sarandonasal
2024-10-25 19:02:02671semak imbas

How to Customize 404 Error Handling in httprouter with Custom Handlers?

Mengendalikan 404s dalam httprouter dengan Pengendali Tersuai

httprouter ialah perisian tengah penghalaan yang popular untuk Golang, yang membolehkan anda mendaftar pengendali tersuai untuk laluan atau corak tertentu. Dalam kes di mana laluan atau sumber tidak ditemui, anda mungkin mahu mengendalikan sendiri respons 404 Not Found ini.

Memahami Medan NotFound

Jenis httprouter.Router mempunyai medan yang dipanggil NotFound, iaitu http.Pengendali. Ini bermakna anda boleh menetapkan pengendali tersuai ke medan ini untuk mengendalikan 404 respons.

Mencipta Pengendali NotFound Tersuai

Untuk mencipta pengendali NotFound tersuai, anda perlu menentukan fungsi dengan tandatangan :

func(http.ResponseWriter, *http.Request)

Anda kemudian boleh menukar fungsi ini kepada http.Handler menggunakan fungsi pembantu http.HandlerFunc.

Contoh Penggunaan

Berikut ialah contoh cara anda boleh menetapkan pengendali NotFound tersuai:

<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)
    w.Write([]byte("My own Not Found handler."))
    w.Write([]byte(" The page you requested could not be found."))
}

var router *httprouter.Router = ... // Your router value
router.NotFound = http.HandlerFunc(MyNotFound)</code>

Pengendali tersuai ini akan dipanggil secara automatik oleh httprouter apabila respons 404 Not Found ditemui.

Invocation Manual NotFound Handler

Dalam sesetengah kes, anda mungkin mahu menggunakan pengendali NotFound secara manual dari dalam pengendali lain. Anda boleh mencapai ini dengan menghantar ResponseWriter dan *Permintaan ke fungsi MyNotFound atau terus ke kaedah NotFound penghala:

<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) {
    exists := ... // Find out if requested resource is valid and available
    if !exists {
        MyNotFound(w, r) // Pass ResponseWriter and Request
        // Or via the Router:
        // router.NotFound(w, r)
        return
    }

    // Resource exists, serve it
    // ...
}</code>

Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan Pengendalian Ralat 404 dalam httprouter dengan Pengendali Tersuai?. 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