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.
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.
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.
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.
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!