Mengendalikan Ralat 404 dengan Pengendali Tersuai httprouter
Dalam API HTTP yang dibina dengan httprouter, mengendalikan ralat 404 (Tidak Ditemui) memerlukan pengendali tersuai . Dokumentasi menyebut kemungkinan ini, tetapi ia tidak memberikan arahan yang jelas tentang cara menciptanya.
Menyediakan Pengendali Tersuai
Untuk mengendalikan 404 ralat secara manual, ikuti langkah-langkah berikut:
Tentukan fungsi dengan tandatangan berikut:
<code class="go">func(http.ResponseWriter, *http.Request)</code>
Tukar fungsi menjadi http.Handler menggunakan http. Fungsi pembantu HandlerFunc().
<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) // StatusNotFound = 404 w.Write([]byte("My own Not Found handler.")) // or with more detailed message w.Write([]byte(" The page you requested could not be found.")) }</code>
Tetapkan pengendali MyNotFound ke medan NotFound httprouter:
<code class="go">var router *httprouter.Router = ... // Your router value router.NotFound = http.HandlerFunc(MyNotFound)</code>
Menggunakan Pengendali Tersuai Secara Manual
Dalam pengendali anda, anda boleh memanggil pengendali MyNotFound secara manual, jika perlu, dengan menghantar ResponseWriter dan *Permintaan:
<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>
Dengan melaksanakan ini langkah, anda boleh mengendalikan ralat 404 dengan berkesan dalam API berasaskan httprouter anda dan menyesuaikan tingkah laku mengikut keperluan.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat 404 dengan Pengendali Tersuai dalam httprouter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!