Rumah > pembangunan bahagian belakang > Golang > Bagaimana Saya Boleh Menyahdaftar Pengendali dalam Pakej net/http?

Bagaimana Saya Boleh Menyahdaftar Pengendali dalam Pakej net/http?

Mary-Kate Olsen
Lepaskan: 2024-11-07 00:04:03
asal
1057 orang telah melayarinya

How Can I Unregister Handlers in the net/http Package?

Nyahdaftar Pengendali dalam net/http

Dalam net/http, pengendali boleh didaftarkan secara dinamik pada corak URL tertentu menggunakan http.Handle fungsi. Walau bagaimanapun, pemultipleks lalai tidak menyediakan mekanisme untuk menyahdaftar pengendali.

Satu pendekatan untuk menyahdaftar pengendali adalah dengan mencipta pemultipleks tersuai yang memanjangkan jenis http.ServeMux standard. Pemultipleks tersuai ini boleh memasukkan kaedah untuk membatalkan pendaftaran pengendali. Sebagai contoh, kod berikut mentakrifkan pemultipleks tersuai yang menambahkan kaedah Deregister:

<code class="go">type MyMux struct {
    *http.ServeMux
    mu sync.Mutex // Guards the m map
    m  map[string]http.Handler
}

func (mux *MyMux) Deregister(pattern string) error {
    mux.mu.Lock()
    defer mux.mu.Unlock()
    if _, ok := mux.m[pattern]; !ok {
        return errors.New("handler not registered")
    }
    delete(mux.m, pattern)
    return nil
}</code>
Salin selepas log masuk

Setelah pemultipleks tersuai ditakrifkan, ia boleh digunakan untuk mengendalikan permintaan. Contohnya:

<code class="go">mux := new(MyMux)
mux.Handle("/create", &factory)

srv := &http.Server{
    Addr:    "localhost:8080",
    Handler: mux,
}
srv.ListenAndServe()</code>
Salin selepas log masuk

Memanggil kaedah Deregister pada pemultipleks tersuai akan menghentikan pengendali yang sepadan daripada melayan permintaan. Ambil perhatian bahawa pengendali mesti didaftarkan menggunakan contoh pemultipleks tersuai yang sama agar pembatalan pendaftaran berkesan.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Menyahdaftar Pengendali dalam Pakej net/http?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan