Kendalikan Penyahdaftaran dalam net/http
Pengendali HTTP dalam net/http boleh didaftarkan secara dinamik dan tidak didaftarkan untuk memberikan fleksibiliti dalam mengendalikan permintaan. Untuk menyahdaftar pengendali, ServerMux tersuai boleh dibuat.
Melaksanakan ServerMux Tersuai
Salin kod untuk ServerMux daripada kod sumber Go (GOROOT/src/pkg /net/http/server.go, talian 837-939). Tambahkan kaedah Deregister pada ServerMux tersuai untuk mengalih keluar pengendali daripada pemetaan corak-ke-Pengendali:
<code class="go">func (mux *MyMux) Deregister(pattern string) error { mux.mu.Lock() defer mux.mu.Unlock() del(mux.m, pattern) return nil }</code>
Penggunaan
Buat contoh ServerMux tersuai dan kendalikan laluan "/create" seperti biasa:
<code class="go">mux := newMux() mux.Handle("/create", &factory)</code>
Tetapkan ServerMux tersuai sebagai Pengendali untuk pelayan HTTP:
<code class="go">srv := &http.Server { Addr: localhost:8080 Handler: mux, }</code>
Nyahdaftar
Untuk menyahdaftar pengendali, cuma panggil kaedah Deregister pada ServerMux:
<code class="go">mux.Deregister("/123/*")</code>
Ini akan mengubah suai gelagat penghalaan pelayan dan permintaan seterusnya kepada "/123/*" tidak lagi dikendalikan oleh pengendali yang berdaftar sebelum ini.
Pengubahsuaian Selamat
Mengubah suai ServerMux dengan memanggil deregister() daripada goroutine lain adalah selamat dan akan mengemas kini logik penghalaan untuk pelayan.
Atas ialah kandungan terperinci Bagaimana untuk membatalkan pendaftaran Pengendali HTTP dalam net/http Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!