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

Susan Sarandon
Lepaskan: 2024-10-25 19:02:02
asal
620 orang telah melayarinya

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)
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!