Bagaimanakah saya boleh Menyahdaftar Pengendali dalam Pakej `net/http` Go?

Susan Sarandon
Lepaskan: 2024-11-05 14:33:02
asal
938 orang telah melayarinya

How can I Unregister Handlers in Go's `net/http` Package?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!