Nyahdaftar Pengendali dalam net/http
Dalam net/http, mendaftar pengendali mengaitkan corak URL dengan pengendali HTTP tertentu. Walau bagaimanapun, mungkin terdapat keperluan untuk menyahdaftar pengendali semasa runtime, sama seperti membuat pengendali untuk corak URL.
Contoh yang diberikan menunjukkan penciptaan kilang pengendali untuk mencipta pengendali secara dinamik untuk URL seperti "/123 /" dan daftarkan mereka. URL "/destroy/123" yang sepadan tiada untuk menyahdaftar pengendali untuk "/123/".
Untuk melaksanakan fungsi nyahdaftar, ServerMux tersuai boleh dibuat dengan menyalin kod daripada GOROOT /src/pkg/net/http/server.go. ServerMux tersuai akan memerlukan kaedah untuk membatalkan pendaftaran. Ini boleh dilaksanakan dengan mengunci peta dan memadamkan entri yang dikaitkan dengan corak.
<code class="go">func (mux *MyMux) Deregister(pattern string) error { mux.mu.Lock() defer mux.mu.Unlock() del(mux.m, pattern) return nil }</code>
Untuk menggunakan mux tersuai ini, ia boleh dikonfigurasikan sebagai Pengendali untuk pelayan HTTP. Mengubah suai mux dengan memanggil deregister() daripada goroutine lain adalah selamat dan akan menjejaskan penghalaan mesej oleh ListenAndServe().
<code class="go">mux := newMux() mux.Handle("/create", &factory) srv := &http.Server { Addr: localhost:8080 Handler: mux, } srv.ListenAndServe()</code>
Dengan melaksanakan ServerMux tersuai dengan kaedah penyahdaftaran, ia menjadi mungkin untuk mengurus pengendali secara dinamik dan nyahdaftarkannya pada masa jalan.
Atas ialah kandungan terperinci Bagaimanakah saya boleh Menyahdaftar Pengendali dalam Pakej `net/http` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!