Menyesuaikan "Tidak Ditemui" (404) Pengendalian dengan httprouter
Apabila membangunkan API menggunakan perpustakaan httprouter, kendalikan 404 (Not Found) respons adalah tugas yang penting. Walaupun dokumentasi menyebut kemungkinan mengendalikan 404s secara manual, melaksanakan pengendali tersuai boleh menjadi mencabar.
Memahami Medan NotFound
Struktur httprouter.Router termasuk medan bernama NotFound, yang jenis http.Handler. Ini bermakna bahawa nilai untuk NotFound mesti melaksanakan kaedah ServeHTTP yang terdapat dalam antara muka http.Handler.
Mencipta Pengendali "Tidak Ditemui" Tersuai
Untuk menentukan sendiri pengendali tersuai, anda boleh mencipta fungsi dengan tandatangan yang sepadan dengan kaedah ServeHTTP:
<code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) { // ... Custom handling logic }</code>
Menukar Fungsi kepada Pengendali
Untuk menukar fungsi anda kepada nilai yang melaksanakan antara muka http.Handler, anda boleh menggunakan fungsi pembantu http.HandlerFunc():
<code class="go">router := httprouter.New() router.NotFound = http.HandlerFunc(MyNotFound)</code>
Invokasi Manual Pengendali Tersuai
Jika anda mahu hubungi pengendali tersuai anda secara manual dari dalam pengendali lain, berikan pengendali ResponseWriter dan *Permintaan:
<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) { // ... Code to determine resource validity if !resourceExists { MyNotFound(w, r) // Manual invocation of custom handler return } // ... Resource exists, serve it normally }</code>
Kesimpulan
Dengan mengikuti langkah ini, anda boleh memperibadikan proses pengendalian "Tidak Ditemui" dengan berkesan dalam API berasaskan httprouter anda, memastikan pengguna menerima respons yang sesuai apabila cuba mengakses sumber yang tidak wujud.
Atas ialah kandungan terperinci Bagaimana untuk Menyesuaikan 404 (Tidak Ditemui) Respons dalam Go dengan httprouter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!